登录时显示客户信息

时间:2014-01-13 11:21:39

标签: php mysql login portal

我希望有人可以帮我解决我的问题。基本上我想要创建的是登录系统,而客户可以登录查看他们的包裹详细信息(地址,帐单号码等)但我很困惑我如何根据登录的用户显示客户结果。

到目前为止,我有2个表,一个名为 userlogin ,另一个名为 userinfo Userlogin 只包含用户名和密码数据,而 userinfo 将包含所有客户信息(地址,帐单号等)。这两个表共享一行具有相同值的行 user_id 。我已经尝试使用MYSQL内连接等,但我不确定我哪里出错了,为什么我不能返回一个用户信息,而是显示所有结果,或者没有。

以下是我的2页的代码,首先是登录页面。

    //Login.php
session_start();
if($user_is_valid) {
    //Store the id in the session
    $_SESSION['user_id'] = $user_id;

    //Redirect to the home-page
    header('Location: home.php');
    exit;
}
////// Login Section.
$Login=$_POST['Login'];
if($Login){ // If clicked on Login button.
    $username=$_POST['username'];
    $password=$_POST['password']; // Encrypt password with md5() function.

    // Connect database. 
    //connect
    $con = mysql_connect("*****","*****","*****");
    if (!$con){
        die('Could not connect: ' . mysql_error());
    }
    //datebase
    mysql_select_db("*****", $con);

    // Check matching of username and password.
    $result=mysql_query("select * from userlogin where username='$username' and password='$password'");
    if(mysql_num_rows($result)!='0'){ // If match.
    $_SESSION ['user']['id'] = $result ['id'];
        session_register("username"); // Craete session username.
        header("location:home.php"); // Re-direct to main.php
        exit;
    }
    else { // If not match.
        $message="--- Invalid Username or Password ---";
    }

} // End Login authorize check.

这是主页(显示客户信息的页面)。

//Home.php
if(!strlen(trim($_SESSION['username']))) {
 header("Location:login.php");
 exit();
}
session_start();
echo $_SESSION['user_id']; //This will output the value we set earlier

$con = mysql_connect("*****","*****","*****");
if (!$con){
    die('Could not connect: ' . mysql_error());
}
//datebase
mysql_select_db("*****", $con);
//select
$user_id = $_GET['user_id'];
$result = mysql_query("SELECT userinfo.name as name, userinfo.address as address, userlogin.username as username  
                       FROM userinfo
                       INNER JOIN userlogin ON userlogin.user_id = userinfo.user_id
                       WHERE userlogin.user_id = userinfo.user_id");

while($row = mysql_fetch_array($result)){
    echo $row['name'] . '</br> ';
    echo $row['username'] . '</br> ';
    echo $row['address'] . '</br> ';
}

所以在坚果壳中,我想要做的是创建一个系统,而用户可以进入我们的网站,登录然后显示他们的信息,但我不确定我哪里出错了,老实说,我很困惑自己。

我知道我可能没有解释得这么好,或者我的代码可能不是很干净,但请提出任何反馈,问题,或者如果你能指出我正确的方向我会非常感激!谢谢!

2 个答案:

答案 0 :(得分:0)

变化:

$result = mysql_query("SELECT userinfo.name,userinfo.address,userinfo.username  
FROM userinfo
INNER JOIN userlogin ON userlogin.user_id = userinfo.user_id
WHERE userlogin.user_id = $user_id;");

$result = mysql_query("SELECT userinfo.name,userinfo.address,userinfo.username  
FROM userinfo
INNER JOIN userlogin ON userlogin.user_id = userinfo.user_id
WHERE userlogin.user_id = $user_id");

你的php var。

后面有一个分号

答案 1 :(得分:0)

您可以将会话视为存储状态的位置 “pageloads”/请求。在这种情况下,状态可能是 用户已经过身份验证,如果是,那么当前的身份是什么 用户有。例如,当用户登录时 并且您已在数据库/后端验证了他们的身份 您初始化会话并存储其用户ID。这允许 您可以在以下任何请求中检索此ID,直到您 摧毁会议。

//Login.php
session_start();
if($user_is_valid) {
    //Store the id in the session
    $_SESSION['userid'] = $userId;

    //Redirect to the home-page
    header('Location: Home.php');
    exit;
}

这允许我们在任何后续页面加载中检索userid 只需初始化会话并获取内容即可 $_SESSION['userid'],如此:

//Home.php
session_start();
echo $_SESSION['userid']; //This will output the value we set earlier

最后,也许我们还需要一个清除我们存储内容的页面 当前用户的会话,即在用户想要的情况下 注销:

//Logout.php
session_start();
$_SESSION = array();
session_destroy();

此设置还可确保用户只能看到 他们被允许的信息。即使会话可以被篡改 如果一个人不小心,他们就要惹麻烦了 只需更改查询字符串中的某些参数即可。

至于你的实际数据库交互,我建议切换 到mysqli或MySql PDO,因为旧的mysql已被弃用,请参阅: http://php.net/pdo_mysqlhttp://php.net/mysqli

这也使您可以轻松利用预先准备好的语句 一种避免SQL注入问题的简单方法。显然,有 一些开销和与使用预准备语句相关的问题, 但在你的情况下,我认为这对你来说最简单。查看MySQL Prepared Statements或进行快速stackoverflow搜索。