它应该进入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
答案 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的不同文件中,我是对的吗?
敬礼