【问题标题】:How to display the username entered from the user on the next page with php如何使用php在下一页显示用户输入的用户名
【发布时间】:2013-03-11 06:53:09
【问题描述】:

我的主页上有两个输入框,一个用于用户名,一个用于密码。我有一个 php 文件,它将检查我的数据库以检查这些凭据并允许或拒绝访问。当用户获得访问权限时,我想在我的屏幕上显示,登录为:....“在主页上输入的用户名登录”....

这是我的代码,它检查我的数据库以允许或拒绝访问。

<?php

$host="localhost"; // Host name 
$username="********"; // Mysql username 
$password="********"; // Mysql password 
$db_name="db?K1012904"; // Database name 
$tbl_name="AdminUser"; // 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");

// username and password sent from form 
$myusername=$_POST['myusername']; 
$mypassword=$_POST['mypassword']; 

// 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 username='$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 "login_success.php"
session_register("myusername");
session_register("mypassword"); 
header("location:loginsuccess.php");
}
else {
echo "Wrong Username or Password"; 
}
?>

这里是用户输入凭据的地方

 <form name="form1" class="navbar-form pull-right" method="post" action="checklogin.php">
          <input name="myusername"  type="text"  id="myusername" placeholder="Email">
          <input name="mypassword" id="mypassword" class="span2" type="text" placeholder="Password">
          <button type="submit" name="submit"class="btn">Sign in</button>
        </form>

这是我试图显示用户名的地方

        <p class="navbar-text pull-right">
    Logged in as: <?php echo $myusername ?> </p>

我的问题是我似乎无法显示用户输入的用户名,有什么想法可以让它工作吗?

【问题讨论】:

  • $_SESSION['myusername']

标签: php html database phpmyadmin


【解决方案1】:

session_register 在 php 5.3 中已弃用并从 php 5.4 中删除,因此您的会话代码可能根本无法工作。

您应该将session_start(); 放在使用会话的每个页面的顶部并分配您的变量,例如:

$_SESSION['myusername'] = $myusername;

然后您可以像这样访问它:

echo $_SESSION['myusername'];

在开始会话的页面上。

【讨论】:

    【解决方案2】:

    您的用户名存储在数据库中,只需在会话中存储一个 user_id:

    $_SESSION['user_id'] = // whatever the logged in user's id ends up being.
    

    然后,在任何后续页面上,提取该 user_id,并在数据库上运行 select 以查找其他客户端信息。数据库应该是您的用户数据的规范来源,而不是 $_SESSION,除了“已登录”数据库 id 标识符,否则会导致问题。

    顺便说一句,您希望研究存储过程和PDO bound queries 以确保您的生命安全,因为 mysql_query 是老派且已弃用。同样,stripslashes() 是一个坏信号。哦,你使用的是明文密码。

    因此,总的来说,问问自己是否真的想编写自己的登录安全系统并重新审视每个人在这样做时遇到的所有安全标准问题?相反,请研究一个开源身份验证项目对这个反复解决问题的解决方案。这里先搜索php authentication on github with 867 results,而不是自己动手,不建议安全经验不足的人使用。

    另请参阅: http://pear.php.net/packages.php?catpid=1 Pear 认证类 https://github.com/Kausheel/Authentication Github Auth Repository 来自

    【讨论】:

      【解决方案3】:

      你应该放

      session_start();
      

      之前

      session_register();
      

      【讨论】:

        【解决方案4】:

        您使用的一些方法已被弃用,但应该仍然有效。

        您正在设置一个名为 myusername 的会话变量,用于存储用户的用户名。因此,一旦在您想要回显当前用户名的页面上,您就会想要回显变量 $_SESSION['myusername']。

        例如

        <p class="navbar-text pull-right">
        Logged in as: <?php echo $_SESSION['myusername']; ?> </p>
        

        我可能是错的,但我相信这不会有问题。

        【讨论】:

        • 我已将此添加到我的代码中,但是,我仍然没有看到用户输入的内容?
        • 我认为session_register函数的使用其实已经被删除了。在您的代码中,将:session_register("myusername"); session_register("mypassword"); 更改为:$_SESSION['myusername'] = $_POST['myusername']; $_SESSION['mypassword'] = $_POST['mypassword']; 然后试一试。还要确保您在页面顶部添加了 session_start(),就在您打开 php 标记之后。
        【解决方案5】:

        您可以在使用

        登录时将数据存储在会话变量中
        session_start();
        ...
        $_SESSION['user_name'] = $user_name; $_SESSION['user_id'] = $user_id;
        

        但不要忘记在注销时使用 session_destroy()

        销毁会话变量

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-08-03
          • 1970-01-01
          • 2013-10-01
          • 1970-01-01
          • 2011-01-21
          • 2021-06-24
          相关资源
          最近更新 更多