web-dev-qa-db-fra.com

HTML PHP Afficher le nom d'utilisateur après la connexion réussie

J'ai un <div> dans mon fichier onlinestore.html qui est mon menu qui contient de Login/Register. Ce que je veux, c'est après la connexion réussie, le <div> pour la connexion/l'enregistrement change en nom d'utilisateur. Ce que j'ai fait ne va pas afficher le résultat attendu que je veux. Alors, y at-il un problème avec mon code?

Voici ce que j'ai fait: 

onlinestore.html

<li class='active' style='float:right;'>
  <?php 
  session_start();
    if($_SESSION['logged']==true){ 
        echo $_SESSION["username"];
        echo '<a href="logout.php"><span>Logout</span></a></li>';
        }
    elseif($_SESSION['logged']==false) 
        echo '<a href="registerform.html"><span>Login/Register</span></a></li>';
    ?>

Voici un autre fichier Checklogin.php:

if($count==1){
  session_start();
  $_SESSION['logged']=true;
  $_SESSION ['username']=$myusername;
  header("refresh:1;url=onlinestore.html");
  }
else{
   $_SESSION['logged']=false;
   header("refresh:2;url=login.html");}

Voici le résultat attendu: 

Avant la connexion enter image description here

Après la connexion enter image description here

Voici ce que je reçois avec le code ci-dessus: My code wont work

7
JK9

Soit vous devez renommer vos onlinestore.html et login.html en fichiers .php afin que le PHP fonctionne dessus, ou bien utiliser l’option addtype de votre fichier htaccess. 

Dans votre onlinestore.html, procédez comme suit: 

<?php
session_start(); // Right at the top of your script
?>

<li class='active' style='float:right;'>
  <?php 
  if($_SESSION['logged']==true)
    { 
      echo $_SESSION["username"];
      echo '<a href="logout.php"><span>Logout</span></a></li>';
    }
  elseif($_SESSION['logged']==false)
    {
      echo '<a href="registerform.html"><span>Login/Register</span></a></li>';
    }
  ?>

Dans votre checklogin.php, procédez comme suit: 

<?php
session_start(); // Right at the top of your script
?>

if($count==1)
  {
    $_SESSION['logged']=true;
    $_SESSION['username']=$myusername;
    header("Location: onlinestore.html");
    exit();
  }
else
  {
     $_SESSION['logged']=false;
     header("Location: login.html");
     exit();
  }

Si cela ne fonctionne pas, dites-moi ce qui se passe.
Avez-vous des fichiers HTML configurés pour analyser PHP - code?
Ou un fichier htaccess avec:
AddType application/x-httpd-php .htm .html

MODIFIER

Essayez ceci pour le débogage: 

Dans votre checklogin.php, procédez comme suit: 

<?php
session_start(); // Right at the top of your script
?>

if($count==1)
  {
    $_SESSION['logged']=true;
    $_SESSION['username']=$myusername;
    echo "Login worked";
    exit();
  }
else
  {
     $_SESSION['logged']=false;
     echo "Login failed";
     exit();
  }

Cela vous montrera si la connexion fonctionne. Si ce n'est pas le cas et que vous obtenez un "échec de connexion", c'est pourquoi vous obtenez le lien "Connexion/Inscription" sur votre page. 

Si le message "Connexion utilisée" s'affiche, puis réglez le code à nouveau et ensuite sur la page onlinestore.html, procédez comme suit: 

echo "This is working";
exit();

Ce qui se produit? Avez-vous le message "Cela fonctionne" sur la page et rien d'autre?

2
James

Dans votre instruction else, vous n'avez pas défini une session_start() comme vous l'avez fait dans votre instruction if.

Et sinon, au lieu de vérifier la valeur d'un $ _SESSION et d'en déterminer la valeur, vous pouvez utiliser les éléments suivants:

if (session_status() == PHP_SESSION_NONE) {
//Do something if the session is not existing
}

D'autres options stockent des variables dans un $_COOKIE et vérifient ensuite si elle est isset ou non (if(isset($_COOKIE["username"]){})

J'espère que cela vous a aidé

1
Orion

Eh bien, il manque beaucoup de code.

Où est votre script de connexion?

Tout d'abord, vous avez besoin d'un <form> avec les champs de saisie (login et mot de passe) et d'un bouton d'envoi.

Par exemple:

<form action='login.php' method='post'>
<input type='text' name='loginname'></input>
<input type='password' name='loginpassword'></input>
<input type='submit'>Submit</input>
</form>

Votre login.php

<?php 
session_start();
// Dont forget to check your variables
$loginname = $_POST["loginname"];
$password = $_POST["loginpassword"];
// Check the correct login (for example with a database)
if ($login_correct) {
    $_SESSION["username"] = $loginname;
    $_SESSION["logged"] = true;
    header("index.html");
    exit;
else {
    $_SESSION["logged"] = false;
    header("registerform.html");
    exit;


   }
}
?>

Dans votre index.html vous pouvez faire:

<?php 
session_start();
if($_SESSION['logged'] == true){ 
    echo $_SESSION["username"];
    echo '<a href="logout.php"><span>Logout</span></a></li>';
}
else {
    echo '<a href="registerform.html"><span>Login/Register</span></a></li>';
}
?>
0
q0re

Si vous souhaitez que le nom d'utilisateur soit affiché à la place, comme dans l'exemple, vous devez modifier votre code pour onlinestore.html comme suit:

<li class='active' style='float:right;'>
  <?php 
    session_start();
    if($_SESSION['logged']==true){ 
      echo '<a href="logout.php"><span>' + $_SESSION["username"] + ' (Logout)</span></a></li>';
    }
    elseif($_SESSION['logged']==false) 
      echo '<a href="registerform.html"><span>Login/Register</span></a></li>';
  ?>
0
Johannes
<div class="msg"><?php echo $msg;?></div>
<form type="submit">
   <input type="text" name="Email">
   <input type="password" name="Password">
   <button type="submit" name="Login">Login</button>
</form>
<?php
  require 'connection.php';
  if (isset($_POST['Login'])) {
      $email = $_POST['Email'];
      $password = $_POST['Password'];

      $user = "SELECT username FROM table_name WHERE email = '".$email."' and password = '".$password."'";
      $user = mysqli_query($con, $user);
      if (mysqli_num_rows($user) > 0) {
         while ($row = mysqli_fetch_array($user)) {
               $username = $row['username'];
         }
      } else {
                $msg = "Can't Log in";
      }
    }
     echo $username;
   ?>
0
aary trivedi

Je pense que votre PHP devrait ressembler à cela:

<?php 
session_start();
username = $_SESSION["username"]
if($_SESSION['logged'] == true) { 
    echo '<a href="logout.php"><span>' . username. 'Logout</span></a></li>';
    }
else {
    echo '<a href="registerform.html"><span>Login/Register</span></a></li>';
}
?>

Utilisez des crochets dans les deux cas, sinon, ou aucun. En passant, vous n'avez pas besoin d'autre chose si vous ne vérifiez qu'un booléen. (il n'y a que 2 possibilités)

0
Jutschge