gpt4 book ai didi

php - 即使所有变量都正确,它也不会执行第二个 if 部分?

转载 作者:行者123 更新时间:2023-11-30 21:58:41 25 4
gpt4 key购买 nike

我必须使用 php 和 HTML 为学校编写一个网站,我创建了一个应该用作登录的脚本。问题是它永远不会执行第二个 if 部分。当您以管理员身份登录时,它与第一个一起使用。但是,当您以学生身份使用姓名、名字和 pin 登录时,它只会执行最后一个 if 部分,这会将您重定向到再次登录。

脚本

<html>
<body>
<?php

mysql_connect("","root");
mysql_select_db("projekt");
$PinOG = "SELECT PIN FROM log_in WHERE Name =" . $_POST["Name"] . " and
NName =" . $_POST["NName"];
$NameOG = "SELECT Name FROM log_in WHERE NName =" . $_POST["NName"] . " and
PIN =" . $_POST["Pin"];
$NNameOG = "SELECT NName FROM log_in WHERE Name =" . $_POST["Name"] . " and
PIN =" . $_POST["Pin"];

$resN = mysql_query($NameOG);
$numN = mysql_num_rows($resN);

if ($_POST["Name"] == "Admin" and $_POST["NName"] == "Admin" and
$_POST["Pin"] == 1337){
header("Location:http://localhost/Projekt/Dalkner.html");
exit();

}
if ($_POST["Name"] == $NameOG and $_POST["NName"] == $_NNameOG and
$_POST["Pin"] == $PinOG){
$localtime = localtime();
$localtime_assoc = localtime(time(), true);
if ($localtime["6"] == 0 or $localtime["6"] == 6 or $localtime["6"] ==
1){
$Day = "Montag";}
if ($localtime["6"] == 2){
$Day = "Dienstag";}
if ($localtime["6"] == 3){
$Day = "Mittwoch";}
if ($localtime["6"] == 4){
$Day = "Donnerstag";}
if ($localtime["6"] == 3){
$Day = "Freitag";}

$Week = strftime("%V");
if ($Week % 2){
$SP = "spgm";
$SPO = "spg";
$RP = "rpgm";
$RPO = "rpg";
} else {
$SP = "spum";
$SPO = "spu";
$RP = "rpum";
$RPO = "rpu";
}
$commandEX = "mysqldump -u -p " .$SPO. "_" .$NameOG. "_" .$NNameOG >
$SP. "_" .$NameOG. "_" .$NNameOG.".sql";
exec($commandEX);
$commandIM = "mysql -u -p " .$SP. "_" .$NameOG. "_" .$NNameOG < $SP. "_"
.$NameOG. "_" .$NNameOG.".sql";
exec($commandIM);

$Kurs = "SELECT Kurs FROM Lehrerf, kurse WHERE Lehrer = Lehrerf";
$resK = mysql_query($Kurs);
$numK = mysql_num_rows($resK);

if ($numK != 0){

mysql_query("UPDATE" .$SP."_".$NameOG."_".$NNameOG . " Set NULL
WHERE " . $Day . " = " . $Kurs);
}

$commandREX = "mysqldump -u -p " .$RPO. "_" .$NameOG. "_" .$NNameOG >
$RP. "_" .$NameOG. "_" .$NNameOG.".sql";
exec($commandREX);
$commandRIM = "mysql -u -p " .$RP. "_" .$NameOG. "_" .$NNameOG < $RP.
"_" .$NameOG. "_" .$NNameOG.".sql";
exec($commandRIM);

$RLength = "SELECT RaumNeu FROM RaumÄ";

$resL = mysql_query($RLength);
$numL = mysql_num_rows($resL);

if ( $NumL != 0){

while ( $numL != 0){

$RaumNeu = "SELECT RaumNeu FROM RaumÄ WHERE idx = " . $numL;
$RaumAlt = "SELECT RaumAlt FROM RaumÄ WHERE idx = " . $numL;
if (mysql_num_rows($RaumNeu) === 0){
$numL = $numL - 1;
}else{
$RaumN = "SELECT RaumNeu FROM RaumÄ WHERE idx = " . $numL;
$RaumA = "SELECT RaumAlt FROM RaumÄ WHERE idx = " . $numL;
mysql_query("UPDATE" .$Rp."_".$NameOG."_".$NNameOG . " Set "
. $Day . " = " . $RaumN . " WHERE " . $Day . " = " .$RaumA);
$numL = $numL - 1;
}
}
}
$Vplan = "Select" . $Day . ", Stunden FROM " . $SP. "_" .$NameOG. "_"
.$NNameOG . " ORDER BY stunden DESC";
echo "<P>" . $Vplan . "</P>";
$VplanR = "Select" . $Day . " FROM " . $RP. "_" .$NameOG. "_" .$NNameOG
. " ORDER BY stunden DESC";
echo "<PR>" . $VplanR . "</PR>";

}
if ( $numN == 0 ){
header("Location:http://localhost/Projekt/Log_in.html") ;
exit();
}

?>
</body>
</html>

我真的不知道为什么它不执行第二部分。但是我可以保证登录时输入的变量与数据库完全匹配。

最佳答案

您发布了很多代码。我可以看到两件事。

这是一个。您在程序结束时重定向到登录页面仅取决于在程序开始时获得零行结果集。为了使该结果集具有非零行数,NNamePIN 必须匹配。我无法从您的逻辑判断这是否是正确的行为。

$NameOG = "SELECT Name FROM log_in WHERE NName =" . $_POST["NName"] . " and PIN =" . $_POST["Pin"];
...
$resN = mysql_query($NameOG);
$numN = mysql_num_rows($resN);
...
if ( $numN == 0 ){
header("Location:http://localhost/Projekt/Log_in.html") ;
exit();
}

这是另一个。

if ($_POST["Name"] == $NameOG and $_POST["NName"] == $_NNameOG and $_POST["Pin"] == $PinOG){
...

我看不到 $_NNameOG 的定义位置。我可以看到 $NameOG$PinOG 的定义位置。它们是包含 SELECT 查询的文本字符串。所以 == 测试永远不会成真。所以这段代码看起来不正确。

例如,$NameOG的值就是这个文本字符串。

 SELECT Name FROM log_in WHERE NName = yadda yadda and PIN = 1234;

因此,当您运行此 if 语句时:

if ($_POST["Name"] == $NameOG ... )

你实际上是在做这个比较。

if ('yadda yadda' == 'SELECT Name FROM log_in WHERE NName = yadda yadda and PIN = 1234;' ... )

这永远不会成真。

您必须执行文本字符串存储在 $NameOG 中的 SQL 查询,然后检索结果集。

恕我直言,在您能够使所有这些东西正常工作之前,您需要针对程序中 php 和 SQL 之间发生的事情开发一个更详细的心智模型。

关于php - 即使所有变量都正确,它也不会执行第二个 if 部分?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44216211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com