【问题标题】:Pages are working fine on localhost but not running on the hosting server页面在 localhost 上运行良好,但不在托管服务器上运行
【发布时间】:2015-06-27 12:52:58
【问题描述】:

我创建了一个 PHP 网站,该网站在我的本地主机上运行良好,但是当我在服务器上上传相同的代码时,它显示服务器上的空白页。

我怀疑的问题是,在我使用数据库连接 (dbc.php) 的代码中,我的页面变得空白。当我删除该数据库连接代码时,一切正常。

我正在输入登录代码和 dbc.php。

我的 login.php 代码

<?php


include('dbc.php');


 // get form data, making sure it is valid
 $phone = mysql_real_escape_string(htmlspecialchars($_POST['id']));
 $pass = mysql_real_escape_string(htmlspecialchars($_POST['password']));

 // check to make sure both fields are entered
 if ($phone == '' || $pass == '')
 {
 // generate error message
 $error = 'ERROR: Please fill in all required fields!';

 // if either field is blank, display the form again
header("Location: " .$_SERVER['HTTP_REFERER']);
 } 
 else
 {
 // save the data to the database

    $login_sql=mysql_query("select * from member where email='$phone' and  password='$pass'")
    or die(mysql_error()); 
    $num=mysql_num_rows($login_sql);

    if($num>0)
    {
     session_start();
     $admin_data=mysql_fetch_array($login_sql);
     $_SESSION['usermatri_id']=$admin_data['mid'];


        if($admin_data['mid']>0)
            {
                 header("Location: dashboard.php"); 

            }
        else 
            {
                header("location:".$_SERVER["HTTP_REFERER"]);
            }

     exit;
     }
 else{

    header("location:".$_SERVER["HTTP_REFERER"]);
 }
 }



  // if the form hasn't been submitted, display the form


?>

我的 dbc.php 代码

<?php
//connection to the database
mysql_connect("localhost","root","")or die(mysql_error('cannot connect'));
mysql_select_db("matrimony");
?>

1) 我试过这些问题,但没有用

PHP is not working on server

PHP redirect not working on server

2) 我也尝试添加错误检查,网页上没有显示任何内容,甚至尝试查看 cPanel 错误日志。

ini_set('display_errors',1); 
 error_reporting(E_ALL);

【问题讨论】:

  • 嘿,伙计,您正在获取 id 并将其分配给电话,然后将其用于电子邮件字段以检查记录。这是一团糟
  • 看看这是否有帮助。 mysql 扩展在 php 5.5 php.net/manual/en/function.mysql-select-db.php 中已弃用
  • 你的 PHP 版本是多少?你能告诉我你的 phpinfo()
  • @anantkumarsingh 不,我不想从手机中获取任何信息。
  • @TruongHua Php 版本为 5.4.39

标签: php mysql


【解决方案1】:

首先

下面的代码错了……

 if ($phone == '' || $pass == '')
 {
 // generate error message
 $error = 'ERROR: Please fill in all required fields!';

 // if either field is blank, display the form again
header("Location: " .$_SERVER['HTTP_REFERER']);
 } else{
//the juice...
}

上面的意思是如果:

$_POST['id'] = 123456;
$_POST['password'] = 123456;

我仍然可以喝“果汁


第二:

a) 确保 MySql 服务器已启动并正在运行。
b) 确保您尝试访问的数据库和表已正确导入。
c) 还要确保您有权访问该特定数据库。


第三:

从小处着手

只需将以下内容添加到您的脚本中:

ini_set('display_errors',1); 
error_reporting(E_ALL);

mysql_connect("localhost","root","")or die(mysql_error('cannot connect'));
mysql_select_db("matrimony");

有什么错误吗?不,很好,继续添加小段代码,直到找到你生命中浪费 3 天的原因。

在尝试上述之后,我会重复自己,在尝试上述之后如果您仍然有问题,请在我的答案下方评论,我会尽力为您提供进一步的帮助。

【讨论】:

  • @Pedro Lobito 我检查了你指出的第一个错误。我在那段代码中找不到任何问题。首先我正在检查这两个字段是否已填写。如果已填写我从数据库中检索它的条目以检查它是否存在于数据库中。如果条目已经存在,则允许用户登录,否则不允许登录。您能否详细说明您指出的错误。
  • 第 1 部分:用户可以为 telephonepassword 输入任何内容,您只需检查该字段是否为空。这是一个问题,但现在不是你最大的问题。在第 3 部分:您是否尝试添加更多代码?如果是这样,您是否遇到任何错误?
  • 解释这是怎么回事?整个要点是允许用户输入任何电话和密码,除了一个空字段,当两个字段都存在时,首先你有可以工作和交互的值来验证用户。你的陈述(第一期),即使我不会像他对''所做的那样使用它,也是完全错误的,他正在做他应该做的事情。
【解决方案2】:

我认为@Pedro Lobito 以一种很好的方式解释了每一种可能的灵魂,你应该考虑按照他的建议一步一步地去做。

但现在你可以尝试编辑你的

登录.php

这样我希望这会有所帮助,但也可以尝试@Pedro 的回答。

<?php
 $mail = $_POST['id'];
 $pass = $_POST['password'];
// check to make sure both fields are entered
 if ($mail == '' || $pass == '')
 {
 // generate error message
 $error = 'ERROR: Please fill in all required fields!';

 // if either field is blank, display the form again
header("Location: " .$_SERVER['HTTP_REFERER']);
 } 
else 

{
         include('dbc.php');
         $sql=mysql_query("SELECT * from member where email='$mail' and  password='$pass'")or die(mysql_error());
         $num=mysql_num_rows($sql);
         if($num>0)
     {
               $admin_data=mysql_fetch_array($sql);
           session_start();
           $_SESSION['usermatri_id']=$admin_data['mid'];

           header("Location: dashboard.php");    

        }
     else 
     {
        header('Location:' . $_SERVER['PHP_SELF']);
     }


}

?>

欢迎来到 Stackoverflow。

【讨论】:

    【解决方案3】:

    mysql_real_escape_string 函数已从 PHP 4.3.0 中弃用,并将在未来删除。在最新版本的 PHP 中,它会抛出警告消息。如果任何消息(文本/警告/错误)将打印在header函数之前的页面,则不会重定向。

    可能这里不允许建立与 DB 的连接。您可以使用mysqli 函数。

    【讨论】:

      【解决方案4】:
          //index.php
      <?php
      $conn = mysqli_connect("localhost","root","","md5login");
      session_start();
      
      if (isset($_SESSION["Email"]))
      {
          header("location:welcome.php");
      }
      if (isset($_POST["register"]))
      {
          if (empty($_POST["Email"]) && empty($_POST["Password"]))
          {
              echo '<script>alert("Both Field Are Required")</script>';
          }
          else
              {
              $Email = mysqli_real_escape_string($conn, $_POST["Email"]);
              $Password = mysqli_real_escape_string($conn, $_POST["Password"]);
              $Password = md5($Password);
              $query = "INSERT INTO client (Email, Password) VALUES('$Email','$Password')";
              if (mysqli_query($conn, $query))
              {
                  echo '<script>alert("Rgistration Done")</script>';
              }
          }
      }
          if (isset($_POST["login"]))
          {
              if (empty($_POST["Email"]) && empty($_POST["Password"]))
              {
                echo '<script>alert("Both r Required")</script>';
              }
              else
              {
                  $Email = mysqli_real_escape_string($conn, $_POST["Email"]);
                  $Password = mysqli_real_escape_string($conn, $_POST["Password"]);
                  $Password = md5($Password);
      
                  $query = "SELECT * FROM client WHERE Email = '$Email' AND Password = '$Password'";
                  $result = mysqli_query($conn, $query);
      
                  if (mysqli_num_rows($result) > 0)
                  {
                      $_SESSION['Email'] = $Email;
                      header("location:welcome.php");
      
                  }
                  else
                  {
                      echo '<script>alert("Wrong User Details")</script>';
                  }
              }
          }
      
      ?>
      <html>
      <head>
          <title>Login And Registeration</title>
      </head>
      <body>
      <div class="container" style="width:500px;">
      <h3 align="center"> Login And Register </h3>
          <br>
          <?php
          if (isset($_GET["action"]) == "login")
          {
          ?>
          <h3 align="center">Login</h3>
          <br>
              <form method="post">
                  <label>Enter Email</label>
                  <input type="text" name="Email">
                  <br/>
                  <label>Enter Password</label>
                  <input type="text" name="Password">
                  <br/>
                  <input type="submit" name="login" value="Login">
                  <br/>
                  <p align="center"><a href="index.php">Register</a></p>
              </form>
          <?php
          }
          else
          {
          ?>
              <h3 align="center">Register</h3>
              <br>
              <form method="post">
                  <label>Enter Email</label>
                  <input type="text" name="Email">
                  <br/>
                  <label>Enter Password</label>
                  <input type="text" name="Password">
                  <br/>
                  <input type="submit" name="register" value="register">
                  <br/>
                  <p align="center"><a href="index.php?action=login">Login</a></p>
              </form>
          <?php
          }
          ?>
      
      
      </div>
      </body>
      </html>
      
      //welcome.php
      <?php
      session_start();
      if (!isset($_SESSION["Email"]))
      {
          header("location:index.php?action=login");
      }
      ?>
      <html>
      <head>
          <title>Welcome Page</title>
      </head>
      <body>
      <?php
      echo '<h2>Welcome - '.$_SESSION["Email"].'</h2>';
      echo '<a href="logout.php">Logout </a>';
      ?>
      
      </body>
      </html>
      
      //logout.php
      
      <?php
      session_start();
      session_destroy();
      header("location:index.php?action=login");
      ?>
      

      【讨论】:

      • 为了使您的回答更有效,您应该提供一些上下文。你有什么改变? OP 代码出了什么问题?
      • 您是否只是删除了您的问题,而不是按照建议进行修复和改进?
      【解决方案5】:

      我遇到了这个问题,我几乎流下了眼泪。当我答应分享一个链接时,客户正在等我。现在要解决此问题,您需要进行一些故障排除:

      1. 检查您是否正确加载了所有cssjs 文件。确定。

      2. css 文件中删除 cmets。非常重要。

      3. 更新 jquery。如果可能,请使用 CDN。不要使用 slim,因为某些函数会抛出错误。

      4. 如果密码和所有内容都正确,请检查数据库连接。

      5. 检查您的 php 文件是否有错误,将以下内容放入您的 header php 标签中

        ni_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

      在我的情况下,它是 jquery 文件不工作和 css 文件中的 cmets。还加载不在目录中的文件,例如说 href="assets/css/main.css" 而它不存在。

      【讨论】:

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