Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 若并没有错误,如何将页面重定向到主页?_Php_Mysql - Fatal编程技术网

Php 若并没有错误,如何将页面重定向到主页?

Php 若并没有错误,如何将页面重定向到主页?,php,mysql,Php,Mysql,我正在尝试在login.php表单中创建一个登录函数。如果登录成功,我想重定向到index.php页面。但如果登录中有任何错误,它应该重定向到同一个页面(在本例中,它应该是login.php)。我如何实现这一点 这是我的表单设计代码。根据这段代码,它总是重定向到login.php <form name="login" method="POST" action="login.php"> <table class="table"> <tr> <td>U

我正在尝试在login.php表单中创建一个登录函数。如果登录成功,我想重定向到index.php页面。但如果登录中有任何错误,它应该重定向到同一个页面(在本例中,它应该是login.php)。我如何实现这一点

这是我的表单设计代码。根据这段代码,它总是重定向到login.php

<form name="login" method="POST" action="login.php">
<table class="table">
<tr>
<td>Username</td>
<td><input type="text" name="uname" class="form-control" placeholder="Username"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" class="form-control" placeholder="Password"></td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" name="login" class="btn btn-primary"  value="Login">
</td>
</tr>
</table>
</form>

用户名
密码
这是用于登录的服务器端代码

if (isset($_POST["login"])) {
$uname = $_POST['uname'];
$password = $_POST['password'];
$query = mysql_query("select *from user where username='$uname'") or die(mysql_error());
$numrows = mysql_num_rows($query);
if ($numrows != 0) {
while ($row = mysql_fetch_assoc($query)) {
$dbuser = $row['username'];
$dbpassword = $row['password'];
$status = $row['status'];
}
if ($status == 0) {
?> 
<div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Your account is not yet activated.Please check your email to activate account.</div>
<?php
} else if ($uname == $dbuser && $password == $dbpassword) {
$_SESSION['username'] = $uname;
?>
<?php
} else {
?> 
<div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Incorrect Password.</div>
<?php
}
} else {
?> 
<div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Incorrect Email.</div>
<?php
}
}
if(isset($\u POST[“login”])){
$uname=$_POST['uname'];
$password=$_POST['password'];
$query=mysql\u query(“从用户名为“$uname”的用户中选择*)或die(mysql\u error());
$numrows=mysql\u num\u行($query);
如果($numrows!=0){
while($row=mysql\u fetch\u assoc($query)){
$dbuser=$row['username'];
$dbpassword=$row['password'];
$status=$row['status'];
}
如果($status==0){
?> 
您的帐户尚未激活。请检查您的电子邮件以激活帐户。
密码不正确。
不正确的电子邮件。
用于重定向(确保在此之前不输出/打印/回显任何内容)。
如果
条件(您正在检查有效的用户名和密码),请将此添加到您的
else中-

你的代码中实际上没有“重定向”。当你发送表单时,它只会打开“login.php”页面,仅此而已。如果你想在登录成功时添加重定向,只需添加

  header('Location: index.php');
之后


这里有一个答案,可以让你的页面功能更好,并纠正安全问题

<?php
session_start();
if (isset($_POST["login"])) {
    $uname = mysql_real_escape_string($_POST['uname']);
    $password = mysql_real_escape_string($_POST['password']);
    $query = mysql_query("select *from user where username='$uname' and password='$password' and `status` <> 0") or die(mysql_error());
    $numrows = mysql_num_rows($query);
    if ($numrows == 0) {
        echo '<div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Sorry the provided credentials were not valid, or you account is invalid.</div>';
    } else {
        $_SESSION['username'] = $uname;
        header('Location: PAGEADDRESSHERE');
    }
}

感谢您的评论。但当我使用此选项时,它显示以下错误“警告:无法修改标题信息-标题已由C:\xampp\htdocs\koko\login.php中的C:\xampp\htdocs\koko\login.php第187行发送(输出开始于C:\xampp\htdocs\koko\login.php:121)”@lahiruk93是的。看起来你在回显/打印/显示一些html。如果你正在重定向页面,请确保你不发送任何东西。在这种情况下,请确保你所有的表单标记都在php代码下面和else标记内。如果你想重定向到另一个页面,输出一些东西是没有意义的,对吗?这意味着不可能有任何内容调用标头函数之前的ml、echo等?如果是,我如何才能向用户显示消息?@lahiruk93如果要从服务器端重定向,则重定向之前不需要输出html/print/echo(如果用户的凭据有效,则用户将直接重定向到主页,从而他将知道他的凭据是正确的。)。感谢您的评论。当我使用标题功能时,它会显示警告消息“无法修改标题信息”。这是为什么?书面回答应该可以解决主要问题。。
  header('Location: index.php');
  $_SESSION['username'] = $uname;
<?php
session_start();
if (isset($_POST["login"])) {
    $uname = mysql_real_escape_string($_POST['uname']);
    $password = mysql_real_escape_string($_POST['password']);
    $query = mysql_query("select *from user where username='$uname' and password='$password' and `status` <> 0") or die(mysql_error());
    $numrows = mysql_num_rows($query);
    if ($numrows == 0) {
        echo '<div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Sorry the provided credentials were not valid, or you account is invalid.</div>';
    } else {
        $_SESSION['username'] = $uname;
        header('Location: PAGEADDRESSHERE');
    }
}
<?php
if ($_SERVER['REQUEST_METHOD'] == "POST") {
$uname = mysql_real_escape_string($_POST['uname']);
$password = mysql_real_escape_string($_POST['password']);
$query = mysql_query("select *from user where username='$uname'") or    die(mysql_error());
$numrows = mysql_num_rows($query);
if ($numrows != 0) {
while ($row = mysql_fetch_assoc($query)) {
$dbuser = $row['username'];
$dbpassword = $row['password'];
$status = $row['status'];
}
if ($status == 0) {
?> 
<div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Your account is not yet activated.Please check your email to activate account.</div>
<?php
} else if ($uname == $dbuser && $password == $dbpassword) {
$_SESSION['username'] = $uname;
header("location: home.php");
?>
<?php
} else {
?> 
 <div class="alert alert-danger" style="text-align: center ; font-size: 17px;"  role="alert">Incorrect Password.</div>
<?php
}
 } else {
  ?> 
  <div class="alert alert-danger" style="text-align: center ;font-size:17px;"  role="alert">Incorrect Email.</div>
<?php
}
}

?>
<form name="login" method="POST" action="login.php">
<table class="table">
<tr>
<td>Username</td>
<td><input type="text" name="uname" class="form-control" placeholder="Username"></td>
</tr>
<tr>
<td>Password</td>
<td><input type="password" name="password" class="form-control" placeholder="Password"></td>
</tr>
<tr>
<td>
</td>
<td>
<input type="submit" name="login" class="btn btn-primary"  value="Login">
</td>
</tr>
</table>
</form>