php登录脚本未正确显示[重复]

Posted

技术标签:

【中文标题】php登录脚本未正确显示[重复]【英文标题】:php login script not displaying correctly [duplicate] 【发布时间】:2017-06-02 03:52:40 【问题描述】:

所以我创建了一个user_login.php页面(由html组成,一个登录表单),表单是:

<form method="post" action="scripts/login.php">

<p>Username: <input type="text" name="Username" /></p>

<p>Password: <input type="password" name="Password" /></p>

<p><input type="submit" value="Sign In" /></p>

</form>

除此之外,我还有一个 login.php 脚本(见下文)

<?php
   include "scripts/connection.php";
   session_start();

   if($_SERVER["REQUEST_METHOD"] == "POST") 
      // username and password sent from form 

      $myusername = mysqli_real_escape_string($link,$_POST['Username']);
      $mypassword = mysqli_real_escape_string($link,$_POST['Password']); 

      $sql = "SELECT * FROM Customer WHERE Customer_Username = '$myusername' and Customer_Password = '$mypassword'";
      $result = mysqli_query($link,$sql);
      $row = mysqli_fetch_array($result,MYSQLI_ASSOC);
      $active = $row['active'];

      $count = mysqli_num_rows($result);

      // If result matched $myusername and $mypassword, table row must be 1 row

      if($count == 1) 
         $_SESSION['Username'] = $myusername;

         header("location: Welcome.php");
      else 
         $error = "Your Username or Password is invalid";
      
   
?>

现在我知道我的 connection.php 可以正常工作,因为我在网站的其他地方使用它。

我的问题是,当我在浏览器中浏览 user_login.php 页面时,当我点击“登录”按钮时,它会将我带到 www.website.com/login.php 文件,但整个页面是空白(白色)。 无论我在用户名和密码字段中输入内容还是将它们留空,都会发生这种情况。

显然我需要的是,如果字段为空白或与数据库中的记录不匹配,则会显示错误消息。如果登录名匹配,则会将它们重定向到 Welcome.php 文件。

如果 login.php 脚本缺少任何内容,则不是 100%,因此我们将不胜感激。

更新

添加后:

session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
include "scripts/connection.php";  

在我的代码顶部,我现在收到一条很长的错误消息,而不是纯白屏幕:

警告:include(scripts/connection.php):打开流失败:第 5 行的scripts/login.php 中没有这样的文件或目录

警告:include():在第 5 行的 scripts/login.php 中打开 'scripts/connection.php' 以包含 (include_path='.:/usr/share/php:/usr/share/pear') 失败

注意:未定义变量:第 10 行脚本/login.php 中的链接

警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,在第 10 行的 /scripts/login.php 中给出 null

注意:未定义变量:第 11 行 /scripts/login.php 中的链接

警告:mysqli_real_escape_string() 期望参数 1 为 mysqli,在第 11 行的 /scripts/login.php 中给出 null

注意:未定义变量:第 14 行 /scripts/login.php 中的链接

警告:mysqli_query() 期望参数 1 为 mysqli,在第 14 行的 /scripts/login.php 中给出 null

警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,在第 15 行的 /scripts/login.php 中给出 null

警告:mysqli_num_rows() 期望参数 1 为 mysqli_result,在第 18 行的 /scripts/login.php 中给出 null

【问题讨论】:

永远不要存储纯文本密码!请使用 PHP 的 built-in functions 来处理密码安全问题。如果您使用低于 5.5 的 PHP 版本,您可以使用 password_hash() compatibility pack。在散列之前,请确保您 don't escape passwords 或对它们使用任何其他清理机制。这样做会更改密码并导致不必要的额外编码。 Little Bobby 说 your script is at risk for SQL Injection Attacks. 了解 prepared 对 MySQLi 的声明。即使escaping the string 也不安全! Don't believe it? 在打开&lt;?php标签error_reporting(E_ALL); ini_set('display_errors', 1);后立即将错误报告添加到文件顶部 你的$_SERVER["REQUEST_METHOD"] 是什么?你有回应吗? @JayBlanchard 抱歉,当您问它是什么时?你的意思是?新手不好意思.... 【参考方案1】:

如果您的 scripts/connection.php 与您的 login.php 位于同一文件夹中,则包含应该只是

include "connection.php";

有一件事,你的session_start(); 必须是你的php 中的第一行,然后才包含脚本。这可能会引发错误(您看不到),因此页面是空白的。

session_start() 之后添加这个,然后重新加载页面。所以顶部的完整代码应该如下所示

session_start();
error_reporting(E_ALL);
ini_set('display_errors', 1);
include "scripts/connection.php";

更新

要排除故障,请删除此部分

if($count == 1) 
     $_SESSION['Username'] = $myusername;

     header("location: Welcome.php");
  

试试这个

if($count == 1) 
     echo "It WORKS";
  

这将允许您查看是否满足此条件,如果满足,则重定向是问题

【讨论】:

感谢您的回复,刚刚添加进来,同样的事情发生了。没有任何区别 :( 抱歉,刚刚重新加载了页面,我现在看到一个以警告开头的巨大错误:include(scripts/connection.php): failed to open stream: No such file or directory in /www/scripts/login第 5 行的 .php 警告:include(): 未能打开“scripts/connection.php”以包含 (include_path='.:/usr/share/php:/usr/share/pear') – Tipping44 4 分钟前编辑 完全取出会话开始以查看页面是否显示,甚至没有显示错误的事实令人担忧,您的 php 设置中的某些内容似乎关闭,如果可以的话,也发布您新编辑的完整编码 header('位置:example.com/');应该在任何输出之前先。所有这些都与你看不到的 php 抛出错误有关(白页) 您的意思是让我也将其重新定位到我的页面顶部吗?如果是这样,只要我点击我的“user_login.php”页面(就像用户正在登录一样)它会立即将我重定向到“welcome.php”。 我已经更新了我的答案,看看,解决它死的地方,试试上面。是的,我的意思是编辑您的原始问题并提供所有代码,如果可以的话,标题注释是为了替换您稍后在文件中的标题,在同一位置,抱歉造成混淆

以上是关于php登录脚本未正确显示[重复]的主要内容,如果未能解决你的问题,请参考以下文章

邮件中未显示 HTML 内容 [重复]

带有帐户激活检查的 PHP 登录页面 [重复]

获取“未捕获的参考错误:$ 未定义” - 脚本以正确的顺序加载 - 并且可以从控制台工作 [重复]

PHP脚本未加载托管在xampp中的[重复]

脚本未正确发送登录信息

未捕获的类型错误:$(...).dataTable 不是函数 [重复]