当前位置: 首页 > 知识库问答 >
问题:

重定向功能不工作

汤承德
2023-03-14

我尝试从登录页面获取密码,然后尝试从mysql收集存储的密码。然后我将其与提交的密码进行比较。现在我想,如果两个密码匹配,然后重定向到一个页面。但问题是每次页面重定向时。如果密码与页面重定向不匹配。

<?php
if (redirect()==true){
    header('location:http://google.com');
}
if(redirect()!=false){
    echo "password doesnt match";
}
$hostname="localhost";
$dbname="justlive_main";
$dbusername="justlive_main";
$dbpass="Kalkata1";
#Veriable collected From Login Panel
$Submitted_Email_Address=$_POST['email'];
$Submitted_Password=$_POST['password'];
$encrypt_Submitted_Password=md5($Submitted_Password);

#Lets gather Data From MySql Database
$con=new mysqli($hostname,$dbusername,$dbpass,$dbname);
if (mysqli_connect_errno($con)) {
    die('The connection to the database could not be established.');
}
$query="SELECT * FROM users WHERE Email_Address='$Submitted_Email_Address'";
$result=$con->query($query);
$row=$result->fetch_array();
$SQL_Password = $row['Password'];
function redirect(){
    if ($encrypt_Submitted_Password!=$SQL_Password) {
        return false;
    }
    elseif ($encrypt_Submitted_Password == $SQL_Password) {
        return true;
    }
}
#Lets CLose All The MySql Connection
$result->free();
$con->close();
?>

我已经删除了这个功能,并试图以简单的方式做它。但仍然不起作用。编辑代码:

    <?php 

if ($encrypt_Submitted_Password!=$SQL_Password) {
       echo "Please check your Password";
}
elseif ($encrypt_Submitted_Password == $SQL_Password) {
        header('location:http://google.com');
}
$hostname="localhost";
$dbname="justlive_main";
$dbusername="justlive_main";
$dbpass="Kalkata1";
#Veriable collected From Login Panel
$Submitted_Email_Address=$_POST['email'];
echo "Submited Email Address:". $Submitted_Email_Address."<br>";
$Submitted_Password=$_POST['password'];
echo "Submitted Password : ".$Submitted_Password. "<br>";
$encrypt_Submitted_Password=md5($Submitted_Password);
echo "Encrypted Submitted_Password:".$encrypt_Submitted_Password."<br>";

#Lets gather Data From MySql Database
$con=new mysqli($hostname,$dbusername,$dbpass,$dbname);
if (mysqli_connect_errno($con)) {
    die('The connection to the database could not be established.');
}
$query="SELECT * FROM users WHERE Email_Address='$Submitted_Email_Address'";
$result=$con->query($query);
$row=$result->fetch_array();
$SQL_Password = $row['Password'];
echo "Mysql Database Stored Password: ".$SQL_Password."<br>";


#Lets CLose All The MySql Connection
$result->free();
$con->close();

?>

共有3个答案

上官迪
2023-03-14

您的重定向函数不正确:$encrypt_Submitted_Password$SQL_Password不在函数范围内,因此它将返回通知错误,但您可以为此使用global:

function redirect(){

    global $encrypt_Submitted_Password, $SQL_Password

    if ($encrypt_Submitted_Password!=$SQL_Password) {
        return false;
    }else{
        return true;
    }
}

或者您可以将这两个变量作为参数传递给函数。

正如@Guilleva所说,你在实例化之前调用它:

您的代码应该如下所示:

<?php

function redirect(){
    if ($encrypt_Submitted_Password!=$SQL_Password) {
        return false;
    }else{
        return true;
    }
}


$hostname="localhost";
$dbname="justlive_main";
$dbusername="justlive_main";
$dbpass="Kalkata1";
#Veriable collected From Login Panel
$Submitted_Email_Address=$_POST['email'];
$Submitted_Password=$_POST['password'];
$encrypt_Submitted_Password=md5($Submitted_Password);

#Lets gather Data From MySql Database
$con=new mysqli($hostname,$dbusername,$dbpass,$dbname);
if (mysqli_connect_errno($con)) {
    die('The connection to the database could not be established.');
}
$query="SELECT * FROM users WHERE Email_Address='$Submitted_Email_Address'";
$result=$con->query($query);
$row=$result->fetch_array();
$SQL_Password = $row['Password'];

if (redirect()==true){
    header('location:http://google.com');
}else{
    echo "password doesnt match";
}

#Lets CLose All The MySql Connection
$result->free();
$con->close();
?>
欧阳绪
2023-03-14

我已经检查了你的代码,并在所有变量加载后带来了头命令。它现在在我的尽头工作。我想你在它准备好之前调用了$SQL_Password变量。请看看,让我知道它是否有效。

<?php 
$hostname="localhost";
$dbname="justlive_main";
$dbusername="justlive_main";
$dbpass="Kalkata1";
#Veriable collected From Login Panel
$Submitted_Email_Address=$_POST['email'];
#echo "Submited Email Address:". $Submitted_Email_Address."<br>";
$Submitted_Password=$_POST['password'];
#echo "Submitted Password : ".$Submitted_Password. "<br>";
$encrypt_Submitted_Password=md5($Submitted_Password);
#echo "Encrypted Submitted_Password:".$encrypt_Submitted_Password."<br>";

#Lets gather Data From MySql Database
$con=new mysqli($hostname,$dbusername,$dbpass,$dbname);
if (mysqli_connect_errno($con)) {
    die('The connection to the database could not be established.');
}
$query="SELECT * FROM users WHERE Email_Address='$Submitted_Email_Address'";
$result=$con->query($query);
$row=$result->fetch_array();
$SQL_Password = $row['Password'];
#echo "Mysql Database Stored Password: ".$SQL_Password."<br>";
if ($encrypt_Submitted_Password!=$SQL_Password) {
       echo "Please check your Password";
}
elseif ($encrypt_Submitted_Password == $SQL_Password) {
        header('location:dashboard.php');
}   
#Lets CLose All The MySql Connection
$result->free();
$con->close();

?>
苏鸿波
2023-03-14

在设置$encrypt\u Submitted\u Password和SQL\u Password之前调用redirect()函数。初始化后移动“ifs”。你必须宣布它们是全球性的。或者更好,将变量作为参数传递

 类似资料:
  • 我正在尝试将所有http流量的重定向配置为仅重定向到https。我的配置如下 我们使用的是弹性负载均衡和 EC2 实例 在这种情况下,已配置应用程序负载均衡器。 后端服务器正在使用 Nginx 在端口 443 上工作 为 http 到 https 重定向配置了 Nginx 重定向规则 为端口 80 和 443 配置了 ELB 侦听器 在支持的服务器和 ELB 中都安装了 SSL 证书 我的问题是,

  • 我使用的是python版本3.5.2,打印功能不适合我。这是代码。我收到一个错误,说:“调用打印时缺少前置词” 谢谢

  • 我不知道在modelAndView中发布后如何重定向 我该怎么做?

  • 完成注销后,Azure注销页面不会重定向用户。它只返回以下信息: 你注销了你的账户。关闭所有浏览器窗口是个好主意。 我尝试了不同的注销URL,我发现: > https://login.microsoftonline.com/MY_TENANT/oauth2/logout?post_logout_redirect_uri=https://micway.com.au/ https://login.mi

  • 我想将任何不安全的请求重定向到https,并确保url始终使用“www”。这就是我所拥有的,但似乎不起作用。我错过了什么?

  • 我正在尝试在我的应用程序中正确设置sentry软件包。 我可以登录一个用户进出和保护路由,但我似乎不能得到正常工作。我的理解是,用户在被引导到登录页面之前,会被带回到他们最初调用的路由。目前,它只是继续重定向到默认页面。 在我的路线上。php我已设置以下组: 在这个组中,我已经放置了所有受保护的路由。 在我的过滤器里。php我有以下过滤器: 路由::过滤器('sentryGuest',函数(){