PHP登录表单不能正常工作

时间:2018-03-27 20:50:03

标签: php database mysqli login

它应该进入index.php,但它只是停留在同一页面上。没有警报也没有。我尝试设置为空,但它做同样的事情。

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <link type="text/css" rel="stylesheet" href="style1.css" />
    <title></title>
  </head>
  <body>
    <div class="container-login">

    <div class="login-form">
      <span class="login-text">Login</span>
      <form method="post" action="login.php">
        <input type="text" name="user_name" placeholder="Username" required="required" />
        <br />
        <input type="password" name="user_password" placeholder="Password" required="required" />
        <br />
        <input type="submit" class="login-button" name="login"></input>
      </form>
    </div> <!-- END login -->

  </div> <!-- END container-login -->
  </body>
</html>

<?php
  include('includes/database.php');

  if(isset($_POST['login'])) {

    $user_name = $_POST['user_name'];
    $user_password = $_POST['user_password'];

    $select_user = "SELECT * FROM users WHERE user_name='$user_name' AND user_password='$user_password'";

    $run_user = mysqli_query($con, $select_user) or die(mysqli_error($con));

    $num_user = mysqli_num_rows($run_user) or die(mysqli_error($con));

    if($num_user>0) {

      echo "<script>window.open('index.php?logged=Uspesno ste se ulogovali!','_self')</script>";

    }

    else {

      echo "<script>alert('Izgleda da niste lepo uneli podatke')</script>";

    }
  }

 ?>

我认为它没有输入数据,我尝试更改所有其他输入的名称,仍然无法正常工作。

按要求在POST上执行var转储:

D:\wamp64\www\casopis\admin\login.php:29:
array (size=0)
  empty

5 个答案:

答案 0 :(得分:0)

固定。 问题出在“$ num_user = mysqli_num_rows($ run_user)或die(mysqli_error($ con));”。 出于某种原因,当我删除mysqli_error函数时,它工作得很好。

任何人都有任何想法为什么会出现问题?

答案 1 :(得分:0)

前言:从头到尾完整阅读本答案。

mysqli_num_rows()没有错误检查方法,只有mysqli_query(),这就是您的代码无法执行任何操作的原因。

以下是差异。

面向对象的风格

  

int $ mysqli_result-&gt; num_rows;

程序风格

  

int mysqli_num_rows(mysqli_result $ result)

从手册中拉出:

示例#1面向对象的样式

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

if ($result = $mysqli->query("SELECT Code, Name FROM Country ORDER BY Name")) {

    /* determine number of rows result set */
    $row_cnt = $result->num_rows;

    printf("Result set has %d rows.\n", $row_cnt);

    /* close result set */
    $result->close();
}

/* close connection */
$mysqli->close();
?>

从手册中拉出:

示例#1 mysqli :: query()示例

面向对象的风格

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");

/* check connection */
if ($mysqli->connect_errno) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

/* Create table doesn't return a resultset */
if ($mysqli->query("CREATE TEMPORARY TABLE myCity LIKE City") === TRUE) {
    printf("Table myCity successfully created.\n");
}

/* Select queries return a resultset */
if ($result = $mysqli->query("SELECT Name FROM City LIMIT 10")) {
    printf("Select returned %d rows.\n", $result->num_rows);

    /* free result set */
    $result->close();
}

/* If we have to retrieve large amount of data we use MYSQLI_USE_RESULT */
if ($result = $mysqli->query("SELECT * FROM City", MYSQLI_USE_RESULT)) {

    /* Note, that we can't execute any functions which interact with the
       server until result set was closed. All calls will return an
       'out of sync' error */
    if (!$mysqli->query("SET @a:='this will not work'")) {
        printf("Error: %s\n", $mysqli->error);
    }
    $result->close();
}

$mysqli->close();
?>

注意:您的代码对SQL注入是开放的,您不应该存储纯文本密码。使用预准备语句和安全密码哈希方法。

参考文献:

答案 2 :(得分:-1)

您可能更愿意使用header redirect,而不是使用javascript重定向。要让PHP执行此操作,在调用 $query = mysqli_query($conn ,"select * FROM userinfo WHERE userid ='$userid'"); if(mysqli_num_rows($query) > 0) { echo"Email Exists"; } else { $sql= ("insert into userinfo( userid, username, password) values ('$userid','$username','$password');"); echo"Registration Succesful"; if (!mysqli_query($conn, $sql)){ die('Error: ' .mysqli_error($conn)); } 函数之前,您不能拥有任何输出(包括空格和HTML)。所以,只需将您的PHP代码移到文件的顶部,然后用该header命令替换您的javascript,您应该很好。

在下面的示例中,我仅将您的PHP代码移至顶部,并通过调用header()替换了您的<script>行。您可以根据需要处理代码的错误部分 - 可能将错误消息存储在变量中,然后在HTML中输出。

header()

答案 3 :(得分:-1)

function disappear(sheet) {
  var rb = SpreadsheetApp.newConditionalFormatRule();
  var ranges = [sheet.getRange("A1")];
  rb.setFontColor("white").whenNumberEqualTo(0).setRanges(ranges);
  var rules = sheet.getConditionalFormatRules();
  rules.push(rb.build());
  sheet.setConditionalFormatRules(rules);
}

答案 4 :(得分:-1)

确保您的浏览器没有阻止新窗口(如弹出窗口阻止程序)。这可能是您没有看到预期窗口的原因。

我假设您的代码的PHP部分位于名为login.php的不同文件中,我是对的吗?

敬礼