0

ログインしているユーザーのユーザー名を表示しようとすると、'Welcome, 1' が表示されます。ここで、1 はログインしているユーザーのユーザー名である必要があります。これは members.php の私のコードです。コメントアウトされた行も機能しません。

<?php
require_once('include.php');
?>
<?php
// echo "welcome, {$_SESSION['username']}";     
$user = $_SESSION['username'];

echo "Welcome $user";

?>

ユーザーがログインしているのですが、ログイン確認ページを間違えたのでしょうか。check_login ページのコードは次のとおりです。

<?php 
require_once('include.php');

$username = trim($_POST['user']);
$password = trim($_POST['pass']);

$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);

$sql="SELECT * FROM user WHERE username='$username' and password='$password';";
$result = mysql_query($sql);

$count = mysql_num_rows($result);

if($count !== 0){

$_SESSION['logged-in'] = true;
header("location:members.php?user=$username");
exit; 
}
else {
$_SESSION['logged-in'] = false;
header("location:login_again.php");
exit;
}
?>

ログインに成功すると、members.php ページにリダイレクトされます。ユーザー名が毎回「1」である理由を知っている人はいますか? どうもありがとう

4

3 に答える 3

1

session_start()コードの先頭にが必要です

<?php session_start();
require_once('include.php');
?>
<?php
// echo "welcome, {$_SESSION['username']}";     
$user = $_SESSION['username'];

echo "Welcome $user";

?>

session_startまた、このファイルの先頭でアクセスする前に設定する必要があります

if($count>0){
$_SESSION['username']=$username;
$_SESSION['logged-in'] = true;
header("location:members.php?user=$username");
exit; 
}

あなたのコードは sql インジェクション攻撃に対してオープンです。代わりにプリペアド ステートメントを使用してください

于 2013-05-17T19:04:55.993 に答える
0

以下の点をご確認ください。

  • セッション変数にユーザー名を設定していることを確認してください。

あなたのコードから、次のような行は表示されません。

$_SESSION['username'] = $username

設定しないと何も得られません。

  • 変数session_start()を使用する前に行った場合。$_SESSION

session_start()$_SESSION 変数を使用する場合は、関数を呼び出す必要があります。

于 2013-05-17T19:40:43.023 に答える