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 回答