2

セッションの登録に問題があります。常に機能していましたが、一度は機能しませんでした。私はPHP バージョン 5.2session_register("");を使用しており、変更しようとしているものを読んだ$_SESSION('') = $$blabla;ので、それを実行しましたが、それも機能しませんでした。

これが私のコードです:

<?
ob_start();
$host="localhost"; // Host name

$username="transrpt_transrp"; // Mysql username 

$password="******************"; // Mysql password 

$db_name="transrpt_transrp"; // Database name 

$tbl_name="PlayerData"; // Table name

// Connect to server and select databse.
mysql_connect("$host", "$username", "$password")or die("cannot connect"); 
mysql_select_db("$db_name")or die("cannot select DB");

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword= hash('whirlpool', $_POST['mypassword']);

// To protect MySQL injection (more detail about MySQL injection)
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);

$sql="SELECT * FROM $tbl_name WHERE Name='$myusername' and Password='$mypassword'";
$result=mysql_query($sql);

// Mysql_num_row is counting table row
$count=mysql_num_rows($result);
// If result matched $myusername and $mypassword, table row must be 1 row

if($count!=0){
// Register $myusername, $mypassword and redirect to file "login_success.php"
$resultt = mysql_query("SELECT * FROM PlayerData WHERE Name='$myusername'");
$row = mysql_fetch_array($resultt);
$playerlevel = $row['PlayerLevel'];
$_SESSION['myusername'] = $$myusername;
$_SESSION['mypassword'] = $$mypassword;
$_SESSION['playerlevel'] = $$playerlevel;
header("location:index.php");
}
else {
echo "Wrong username or password";
}

ob_end_flush();
?>
4

3 に答える 3

4

セッションを開始していません:session_start()

$_SESSION('') = $$blabla;

これは意味がありません。関数を呼び出そうとしているようなものですが、呼び出すことはできません$_SESSION

さらに、 and の代わりに and を使用し$$myusername$$mypassword$myusernameます$mypassword

  • なぜあなたは使用していstripslashes()ますか?mysql_real_escape_string()逃走を担当。有効にしていmagic_quotesますか?

  • もう必要ないので$result、 への 2 回目の呼び出しで上書きできます 。mysql_query()必要ありません$resultt

  • なぜ2番目のクエリを作成するのですか? から適切な行をすでにフェッチしていますPlayerData

  • 出力バッファリングは必要ないようです。なぜあなたは持っているob_start()ob_end_flush()ですか?

于 2012-07-25T09:02:44.990 に答える
1

session_start(); を追加してみましたか? PHPファイルの先頭に?

于 2012-07-25T09:01:22.110 に答える
0

スクリプトの先頭で session_start() を使用します

于 2012-07-25T09:11:33.930 に答える