创建一个条件重定向PHP表单


Creating a conditional redirect PHP form

我正在尝试创建一个表单,确认用户已输入允许的电子邮件地址之一,然后将用户重定向到页面"NewPost.php";否则(如果用户没有输入允许的电子邮件地址),他们将被困在此页面上。目前,如果我更改,我可以将主菜传递到下一页

<form action="Verify.php">

<form action="NewPost.php"> 

但这忽略了条件。形式如下:

<form action="Verify.php" method="post" name="VerifyEmail" id="VerifyEmail">
<p>Please enter your student email address</p>
<p> <input type="text" name="Email" size="40" maxlength="40" required/></p>
<p><input type="submit" name="Post" value="Post"/></p>
</form>

以及PHP;$allow变量是学校的数组,其.edu电子邮件地址应满足允许用户输入其电子邮件地址重定向到NewPost.php 的条件

<?php
$Email = trim($_POST['Email']);
$allowed = array ('columbia.edu', 'nyu.edu', 'fitnyc.edu', 'pratt.edu', 'newschool.edu', 'stjohns.edu', 'cooper.edu', 'manhattan.edu', 'pace.edu', 'bard.edu', 'berkeleycollege.edu', 'qc.cuny.edu');
$split = explode($Email, "@");
    $name = $split['0'];
    $school = $split['1'];
if ($school == $allowed) {
header('Location: /NewPost.php');
}
else{echo "<p>Sorry your school is not supported yet</p>";}
?>

为了澄清,我希望只有当他们的电子邮件地址在$allow数组内时,输入他们电子邮件地址的访问才会重定向到NewPost.php,否则他们会被困在当前页面上(Verify.php)。如果有人想自己尝试,地址在这里

谢谢!

您正在将字符串与数组进行比较。你不能那样做。您需要查看该字符串是否在数组的中。使用in_array()isset():

if (in_array($school, $allowed)) {

if (isset($allowed[$school])) {