Ich habe ein System für Benutzer um Erlaubnis zu beantragen ... wenn sie ihre Genehmigungen auswählen, die sie zurückziehen wollen, sollte mein System prüfen können, ob die Kriterien erfüllt sind oder ob sie diese Genehmigung vorher beantragt haben, um Spam zu verhindern.Wie und wo kann ich meine header() platzieren, damit meine if else-Bedingung mehrmals ausgeführt werden kann?
Allerdings habe ich ein großes Problem. Wenn ich header('Location:s_success.php');
setze, würde der Alarm nicht erscheinen. Zum Beispiel, weil der Benutzer 1 oder 2 oder mehr Genehmigungen wählen kann,.
Szenario
Lasst uns die eine Erlaubnis wählen sagen, die sie haben Anspruch auf und eine weitere Genehmigung beantragen, die sie noch nicht in Betracht kommen.
Erwartetes Ergebnis
In diesem Fall geschehen, was sollte ist, dass System sollte sie zum Erfolg Seite und zugleich warnen sie brink, dass die anderen erlauben, die sie für nicht förderfähig sind nicht erfolgreich ist.
Aber unerwartetes Ergebnis:
Sie System zum Erfolg Seite gehen Sie einfach, ohne den Benutzer warnt, dass die nicht qualifizierte Genehmigung nicht erfolgreich ist.
Das ist mein Code:
<?php
session_start();
include'Connections/database.php';
$conn = dbConnect();
if (! $conn)
die("Couldn't connect to MySQL");
$user = $_SESSION['eid'];
$selectedPermit=$_POST['cat'];
$_SESSION['selectedPermit']=$selectedPermit;
foreach($selectedPermit as $permit)
{
$query="SELECT t.PREREQ1, t.PREREQ2, (CASE WHEN (t.PREREQ1 IS NOT NULL) AND (p1.PTYPE IS NULL) THEN 1 ELSE 0 END) AS missing1, (CASE WHEN (t.PREREQ2 IS NOT NULL) AND (p2.PTYPE IS NULL) THEN 1 ELSE 0 END) AS missing2 FROM type AS t LEFT JOIN permit AS p1 ON (t.PREREQ1=p1.ptype) AND (p1.EID = '$user') AND (p1.STATUS='approved') LEFT JOIN permit AS p2 ON (t.PREREQ2=p2.ptype) AND (p2.EID = '$user') AND (p2.STATUS='approved') WHERE t.PTYPE = '$permit' ";
$result=mysql_query($query,$conn);
$row=mysql_fetch_assoc($result);
$missing1=$row['missing1'];
$missing2=$row['missing2'];
if($missing1=='1' or $missing2=='1')
{
$message='You have not met the pre-requisites for '. $permit .' \n';
// echo "You did have not met the Pre-Requisites for." .$permit;
echo "<script>alert(\"$message\");";
// header('Location:s_apply2.php');
echo "location.href='s_apply2.php';</script>";
}
elseif($missing1 =='0' and $missing2 =='0')
{
$query="SELECT PTYPE FROM permit WHERE EID='$user'";
$result=mysql_query($query);
if(mysql_num_rows($result)==0)
{
$query="SELECT MED FROM emp WHERE EID='$user'";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
$med=$row['MED'];
if($med == 'yes')
{
// echo "You are Fine.";
$query = "INSERT INTO permit (EID, PTYPE) VALUES ('$user','$permit')";
mysql_query($query);
header('Location:s_apply_success.php');
}
else
{
// echo "Go do Medical form";
header('Location:medical_question.php');
}
}
else
{
while($row=mysql_fetch_assoc($result))
{
$appliedPermit[]=$row['PTYPE'];
}
if(in_array($permit,$appliedPermit))
{
$message1='You have already applied '. $permit .' before. \n';
// echo"You have already applied for ".$permit ." before <br/>";
echo "<script>alert(\"$message1\");";
// header('Location:s_apply2.php');
echo "location.href='s_apply2.php';</script>";
}
else
{
$query="SELECT MED FROM emp WHERE EID='$user'";
$result=mysql_query($query);
$row=mysql_fetch_assoc($result);
$med=$row['MED'];
if($med == 'yes')
{
// echo "You are Fine.";
$query = "INSERT INTO permit (EID, PTYPE) VALUES ('$user','$permit')";
mysql_query($query);
header('Location:s_apply_success.php');
}
else
{
echo "Go do Medical form";
// header('Location:medical_question.php');
}
}
}
}
}
dbDisconnect($conn);
?>
Vermuten Fehler:
In meinem Code, ich vermute, dass, weil ich header('Location:s_apply_success.php');
verwende daher das unerwartete Ergebnis verursacht passieren. Aber ich kann nicht bestätigen, ob das der Fehler ist.
Was ich versucht habe zu tun, um die vermuteten Fehler zu debuggen:
Aber ich habe versucht echo "You are Fine.";
zu verwenden, anstatt header('Location:s_apply_success.php');
und es funktioniert. Es schuhte das Echo und das Pop-Up.
Welche Fehler bekommen Sie? – Chibuzo
@Chibuzo kein Fehler, aber die Warnung wurde gerade nicht angezeigt, es geht nur um den Header. – Hubert