ユーザーがログインできるウェブサイトがあります。私は試しました。
<?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'>
がありますね。しかし、このフォームの周りには <form></form>
タグがありません。というわけで、これでは正しく投稿できません。そこで、どうすればいいかというと、次のようにします。
<form method="POST" action="index.php">
<label for="userlogin">Username:</label> <input type="text" id="userlogin" name="userlogin" size="20" />
<label for="password">Password:</label> <input type="password" id="password" name="password" size="20" />
<input type="submit" value="login" />
</form>
このフォームは、userlogin と password を $_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";
}
?>
私はあなたのために全体のコードを書くことなく、あまり明確にすることはできません'。だから私はこれがあなたの助けになることを願っています。