私は、ユーザーが許可を申請するシステムを持っています...ユーザーが退職したい許可を選択すると、私のシステムは、スパムを防ぐために、基準を満たしているかどうか、または以前にその許可を申請したことがあるかどうかを確認できるはずです。
しかし、私には大きな問題があります。私が入れheader('Location:s_success.php');
た場合、アラートは表示されません。たとえば、ユーザーは 1 つまたは 2 つ以上の許可を選択できるため、.
シナリオ
申請する資格のある許可証と、まだ資格がない別の許可証を選択するとします。
期待される結果
この場合、何が起こるべきかというと、システムは彼らに成功ページを表示させ、同時に彼らが資格を持たない他の許可が成功しなかったことを警告するべきです.
しかし、予期しない結果:
システムは、資格のない許可が成功しなかったことをユーザーに警告せずに、成功ページに移動します。
これは私のコードです:
<?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);
?>
疑わしいエラー:
私のコードでは、header('Location:s_apply_success.php');
したがって使用しているため、予期しない結果が発生すると思われます。しかし、これが間違いかどうかは確認できません。
疑わしいエラーをデバッグするために私がやろうとしたこと:
しかし、echo "You are Fine.";
代わりに使用しようとしましたがheader('Location:s_apply_success.php');
、機能します。それはエコーとポップアップを靴に入れました。