0

現在のスクリプトに問題があります。変数 $_SESSION['name'] をエコーし​​たいので、結果に名前が表示されるはずです。代わりに、名前の代わりに数字のゼロを表示するだけです。私のデータベースは複数のユーザーとユーザー名でいっぱいですが、名前の表示を拒否しています。

<?php

ob_start();
$host="127.0.0.1"; // Host name 
$username="admin"; // Mysql username 
$password=""; // Mysql password 
$db_name="test"; // Database name 
$tbl_name="members"; // 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['id']; 
$password=$_POST['password'];
$mypassword=md5($password);
$myname = mysql_query("SELECT username FROM $tbl_name WHERE id = $myusername");
if (!$myname) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}

// 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 id='$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==1){

// Register $myusername, $mypassword and redirect to file "plaza.php"
session_start();
$_SESSION['username'] = $myusername;
$_SESSION['password'] = $mypassword;
$_SESSION['name'] = $myname;
header("location:plaza.php");
}
else {
echo "Wrong Username or Password, <a href='index.php'>click here</a> return";
}
ob_end_flush();
?>

///

<?php
session_start();
if(!isset($_SESSION['name'])){
    header("location:index.php");
}
?>
<html>
    <head>
        <title>test</title>
        <link rel="stylesheet" href="style.css" type="text/css" />
    </head>
    <body>
        <div id="header">
        </div>
        <div id="main_container">
            <div id="module_0">
                <h1>Welkom <?php
                             echo $_SESSION['name'];
                            ?>
                <form action="logout.php">
                    <input type="submit" value="Uitloggen"/>
                </form>
            </div>
            <div id="module_1">
                Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque id lacus nec tortor euismod ultrices vehicula vitae tellus. Aliquam consectetur risus suscipit auctor placerat. Nunc nec imperdiet odio. Integer eu dui ut nisi dictum varius in vitae erat. Duis porta, lorem nec volutpat vulputate, nulla elit pretium tellus, vel iaculis purus lacus et lectus. Ut porttitor odio vel tempor varius. Nam id eros sed risus tincidunt pharetra. Ut ligula diam, elementum et facilisis ut, lobortis sit amet leo.
            </div>
            <div id="module_2">
            </div>
            <div id="module_3">
            </div>
            <div id="module_4">
            </div>
            <div id="module_5">
            </div>
        </div>
    </body>
</html>

スクリプトの何が問題なのか、名前の代わりに数字の 0 が表示される理由を知っている人はいますか?

4

3 に答える 3

3

$myname はリソースであり、データベースからのデータではありません。mysql_fetch_rowを使用する必要があります

于 2013-10-01T08:52:03.533 に答える
1

そのコードのため:

$myname = mysql_query("SELECT username FROM $tbl_name WHERE id = $myusername");
if (!$myname) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}

次のように変更する必要があります。

$res = mysql_query("SELECT username FROM $tbl_name WHERE id = $myusername");
$arr = mysql_fetch_array($res);
$myname = $arr['username'];
if (!$myname) {
    echo 'Could not run query: ' . mysql_error();
    exit;
}
于 2013-10-01T08:54:24.843 に答える
-1

$myname は変数タイプであり、mysql_fetch_array() または mysql_fetch_row() を使用してデータベースからデータをフェッチし、セッション変数に $_SESSION['name'] として保存する必要があります。

于 2013-10-01T08:58:54.553 に答える