首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当让我登录时,它没有显示用户数据。

问当让我登录时,它没有显示用户数据。
EN

Stack Overflow用户
提问于 2014-07-11 04:28:22
回答 1查看 78关注 0票数 0

我正在制作一个简单的登录脚本,当选中单选按钮时,应该让用户登录。如果选中“让我登录”单选按钮,我已经设置了一个24小时后到期的cookie,而且它有效.但是我发现了一些错误,比如: C:\xampp\htdocs\Webintegrator-PHP\MySql&PHP\Register&Login\core_login.php中的未定义索引: user_id,第17行,&警告: mysql_result():无法跳到第20行上的MySQL结果索引6上的0行。

这些是用户的姓名和姓氏,应该从数据库中显示。

但是它们总是在用户登录时显示,直到单选按钮“让我登录”被选中为止。

以下是login_form.php的代码

代码语言:javascript
复制
<?php

if(isset($_POST['username']) && isset($_POST['password'])) {
    $username = $_POST['username'];
    $password = $_POST['password'];

    $password_hash = md5($password);

    if(!empty($username) && !empty($password)){
        $query = "SELECT id FROM users WHERE username = '" . mysql_real_escape_string($username) . "' AND password = '" . mysql_real_escape_string($password_hash) . "'";
        if($query_run = mysql_query($query)){
            $query_num_rows = mysql_num_rows($query_run);

            if($query_num_rows == 0) {
                echo "Invalid username/password combination";
            } elseif ($query_num_rows == 1) {

                if(isset($_POST['remember_me'])){
                    setcookie("remember_username", $_POST['username'], time()+3600*24);
                    setcookie("remember_password", $_POST['password'], time()+3600*24);

                    $user_id = mysql_result($query_run, 0, 'id');
                    $_SESSION['user_id'] = $user_id;

                    header ('Location: index_login.php');

                } elseif(isset($_POST['keep_me'])){
                    $user_id = mysql_result($query_run, 0, 'id');
                    setcookie('keep_me_loggedin', $user_id, time()+3600*24);

                    header ('Location: index_login.php');

                } else {
                    $user_id = mysql_result($query_run, 0, 'id');
                    $_SESSION['user_id'] = $user_id;

                    header ('Location: index_login.php');                    
                }
            }
        }
    } else {
        echo "You must supply a username & password";
    }
}

?>

<form action="<?php echo $current_file; ?>" method="POST">
    Username:<input type="text" name="username" value="<?php if(isset($_COOKIE['remember_username'])) {echo $_COOKIE['remember_username'];} ?>"><br/><br/>
    Password:<input type="password" name="password" value="<?php if(isset($_COOKIE['remember_password'])) {echo $_COOKIE['remember_password'];} ?>"><br/><br/>
    <input type="radio" name="remember_me"> Remember me?<br/><br/> 
    <input type="radio" name="keep_me"> Keep me logged in?<br/><br/> 
    <input type="submit" name="submit" value="Log in">
</form>

和index_login.php

代码语言:javascript
复制
<?php

require 'connect_login.php';
require 'core_login.php';

if(loggedin()) {
    $firstname = getuserfield('firstname');
    $surname = getuserfield('surname');
    echo "You are logged in, " . "$firstname " . "$surname " . "<a href='logout.php'>Log out</a>";
} else {
    include 'login_form.php';
}

?>

这是core_login.php

代码语言:javascript
复制
<?php

ob_start();
session_start();

$current_file = $_SERVER['SCRIPT_NAME'];

function loggedin(){
    if (isset($_SESSION['user_id']) && !empty($_SESSION['user_id']) || (isset($_COOKIE['keep_me_loggedin'])) && (!empty($_COOKIE['keep_me_loggedin']))) {
        return true;
    } else {
        return false;
    }
}

function getuserfield($field) {
    $query = "SELECT $field FROM users WHERE id = '" . $_SESSION['user_id'] . "'";

    if ($query_run = mysql_query($query)) {
        return mysql_result($query_run, 0, $field);
    }    
}


?>

任何解决问题的办法都将不胜感激!

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2014-07-11 06:06:07

似乎你只是需要做一些额外的条件检查。

检查$query_run是否是有效的mysql查询结果。

在尝试将isset放在getuserfield()中之前,要检查isset($_SESSION‘’user_id‘)是否为真。

编辑:

我在PHP ()页面上找到了这样的内容:

代码语言:javascript
复制
The returned result resource should be passed to mysql_fetch_array(), and other functions for dealing with result tables, to access the returned data.

这意味着您应该使用mysql_fetch_array()而不是mysql_result()来访问执行的查询的结果。

结果()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24690121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档