phpでセッションIDやユーザー名を取得するには?

ユーザーがログインできるウェブサイトがあります。私は試しました。

<?php echo $_SESSION ['userlogin']

と表示され、ログイン時にセッションをuserloginに設定しても、ユーザー名が表示されないのです

これは私が使用したチュートリアルです

使用する前に、セッションを開始しましたか?

だから、設定するために

<?php
   //Fetch the username from the database
   //The $login and $password I use here are examples. You should substitute this
   //query with one that matches your needs and variables.
   //On top of that I ASSUMED you are storing your passwords MD5 encrypted. If not,
   //simply remove the md5() function from below.
   $query = "SELECT name FROM users WHERE login='" . mysql_real_escape_string($login) . "' AND password='" . md5($password)  . "'";
   $result = mysql_query($query);

   //Check if any row was returned. If so, fetch the name from that row
   if (mysql_num_rows($result) == 1) {
      $row = mysql_fetch_assoc_assoc($result);
      $name = $row['name'];

      //Start your session
      session_start();
      //Store the name in the session
      $_SESSION['userlogin'] = $name;
   }
   else {
      echo "The combination of the login and password do not match".
   }
?>

そして、別のページでそれを取得するには、次のようにします。

<?php
   //Start your session
   session_start();
   //Read your session (if it is set)
   if (isset($_SESSION['userlogin']))
      echo $_SESSION['userlogin'];
?>

**編集部

ログインフォームの作成方法について、もう少し詳しく。$_SESSION['user']` を設定してみたが、うまくいかなかったということですね。

ですから、その前に実際に session_start(); を実行したかどうかだけ確認してください。そうすれば、すべてがうまくいくはずです。セッションに空の変数を代入していない限りは。ですから、代入する変数が実際に値を含んでいるかどうかを再確認してください。のように。

<?php
   session_start();
   echo "Assigning session value to: " . $user;
   $_SESSION['user'] = $user;
?>

リンクしていただいたチュートリアルでは、こうしています。

$_SESSION[user]=$_GET[userlogin];

これは、ここで作成したログインフォームから取得した値を代入していることを意味します。

function loginform() {
   print "please enter your login information to proceed with our site";
   print ("<table border='2'><tr><td>username</td><td><input type='text' name='userlogin' size'20'></td></tr><tr><td>password</td><td><input type='password' name='password' size'20'></td></tr></table>");
   print "<input type='submit' >";    
   print "<h3><a href='registerform.php'>register now!</a></h3>";    
} 

そこには、<input type='text' name='userlogin' size'20'> がありますね。しかし、このフォームの周りには `` タグがありません。というわけで、これでは正しく投稿できません。そこで、どうすればいいかというと、次のようにします。


   Username: <input type="text" id="userlogin" name="userlogin" size="20" />
   Password: <input type="password" id="password" name="password" size="20" />
   <input type="submit" value="login" />   

このフォームは、userloginpassword$_POST 変数に指定して index.php にフォームを投稿して返されます。

そして、index.php で、次のようにします。

<?php
   //Get variables:
   $login = mysql_real_escape_string($_POST['userlogin']);
   $pass = mysql_real_escape_string($_POST['password']);

   //Check your table:
   $query = "SELECT userlogin FROM users WHERE userlogin = '" . $login . "' AND password='" . $pass . "'";
   $result = mysql_query($query);

   //Check if this user exists:
   if (mysql_num_rows($result) == 1) {
      echo "User exists!";

      //Store the login in the session:
      session_start();
      $_SESSION['userlogin'] = $login;
   }
   else {
      echo "Unknown user";
   }
?>

私はあなたのために全体のコードを書くことなく、あまり明確にすることはできません'。だから私はこれがあなたの助けになることを願っています。

解説 (8)

echo の前に session_start(); を置く。

解説 (0)

より多くのコードを表示しないと、あまりコメントできませんが、セッション変数を使用する各ページで session_start を呼び出していることは間違いないですか? また、同じ大文字を使用していることを確認してください (userlogin != UserLogin).

解説 (0)