1

我正在学习 PHP,如果可能的话需要一些帮助。

我知道我错过了一些简单的东西,但无法弄清楚,我有以下 PHP 代码可以将用户从他们刚刚输入用户名和密码的页面转移到名为homepage.php. 该脚本需要生成一个会话名称,但我不确定是否要放置它。

然后我需要一小段 PHP 来检查用户名和密码是否正确,然后再加载页面供用户查看,这有意义吗?有人可以帮忙吗?

<?php 
$host="localhost"; // Host name
$username="root"; // username
$password=""; // password
$db_name="gotswapuser"; // Database name
$tbl_name="users"; // Table name


mysql_connect("$host", "$username", "$password");
mysql_select_db("$db_name");


$myusername=mysql_real_escape_string($_POST['myusername']);
$mypassword=mysql_real_escape_string($_POST['mypassword']);

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

$count=mysql_num_rows($result);

if($count==1){
    header("location:homepage.php");
} else {
  header("location:subscriptionpage.php");
}
?>
4

4 回答 4

2

您应该使用PDO进行数据库访问,而不是 mysql。Mysql 正在被弃用,不是好的做法。

但是,要回答您的问题:

使用您拥有的代码,您只想在“成功”登录中添加几行:

 if($count==1) {  
     session_start();  
     $_SESSION["logged_in"] = 1;  
     header("location:homepage.php");  
 } else {  
   header("location:subscriptionpage.php");  
 }  

然后,在用户应该登录的页面上,执行以下操作:

 session_start();
 if ( ! isset($_SESSION["logged_in"]) || ! $_SESSION["logged_in"]) {
      header("location:signin.php");
      exit;
 }
于 2012-10-27T22:01:24.253 回答
2

MySQL 命令正在贬值,您应该考虑 Mysqli 或 PDO,但除此之外,您应该在 if 子句中启动会话

         if(found){
             session_start();
             $_SESSION['username'] = $myusername;
              redirect user
           }
          rest of code.....
于 2012-10-27T22:02:28.117 回答
0

首先,您需要开始您的会话。见下文:

session_start();

开始会话后,您可以使用 $_SESSION 超全局变量来存储和检索变量。见下文:

$_SESSION['me'] = 'John Doe';
$_SESSION['you'] = 'Jane Doe';
$_SESSION['us'] = 'Doe Family';

echo $_SESSION['us'];

只要确保始终使用 session_start(); 在尝试访问这些变量之前。在此处阅读有关 PHP.net 的更多信息:http: //php.net/manual/en/function.session-start.php

运行 session_start() 后,您可以使用 session_id() 函数轻松检索会话 ID。如果您没有使用 session_start(),它将返回 null。见下文:

echo session_id(); // Returns session ID.

希望这可以帮助!祝你的项目好运。

于 2012-10-27T22:01:07.893 回答
0

你快到了。您只需要: 1,确保您的会话已启动:session_start(); 2,为您的用户名创建会话变量:$_SESSION['username'] = $result[0]['username'];

if($count==1){
    $_SESSION['username'] = $result[0]['username'];
    header("location:homepage.php");
} else {
  header("location:subscriptionpage.php");
}

有几点建议。在调用您的 mysql 语句后,获取行或对象以便能够为您的会话引入您的用户名。

于 2012-10-27T22:01:30.727 回答