重定向请求从未完成-PHP脚本有问题吗?
坦率地说,我不是一个编码狂人。基本上,这个php脚本验证“新闻稿订阅”表单的名称和电子邮件字段。嗯,所有浏览器上的一切似乎都很好。两天后,该脚本在IE9和Firefox 14-16上停止工作。它在铬上工作良好。你们能告诉我是什么导致了这个错误吗 php脚本名为signup.php 代码中的“回音脚本警报”在FF&IE9上似乎不起作用。它在铬合金上工作非常好。这正是我的问题。 Firefox上的错误-Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。 此问题有时可能是由于禁用或拒绝接受Cookie造成的 Firefox上的操作点-已采取所有必要的操作来应对此错误。没有结果 IE9上的错误-它根本没有响应,并停留在同一页上重定向请求从未完成-PHP脚本有问题吗?,php,html,Php,Html,坦率地说,我不是一个编码狂人。基本上,这个php脚本验证“新闻稿订阅”表单的名称和电子邮件字段。嗯,所有浏览器上的一切似乎都很好。两天后,该脚本在IE9和Firefox 14-16上停止工作。它在铬上工作良好。你们能告诉我是什么导致了这个错误吗 php脚本名为signup.php 代码中的“回音脚本警报”在FF&IE9上似乎不起作用。它在铬合金上工作非常好。这正是我的问题。 Firefox上的错误-Firefox检测到服务器正在以一种永远无法完成的方式重定向对此地址的请求。 此问题有时可能是由于
<?php
ob_start();
session_start();
/*Name Validation.*/
function checkName($name)
{
$nAccept = array("&", "’", " ", "-");
if (!ctype_alpha(str_replace ($nAccept, "", $name)))
{
return TRUE;
}
}
/*Email Validation.*/
function checkEmail($email)
{
if(mb_eregi("^[a-zA-Z0-9_]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$]", $email))
{
return FALSE;
}
if (!preg_match("/^[^@]{1,64}@[^@]{1,255}$/i", $email))
{
return false;
}
list($Username, $Domain) = explode("@",$email);
if(getmxrr($Domain, $MXHost))
{
return TRUE;
}
else
{
if(fsockopen($Domain, 25, $errno, $errstr, 30))
{
return TRUE;
}
else
{
return FALSE;
}
}
}
function isInjected($str) {
$injections = array('(\n+)',
'(\r+)',
'(\t+)',
'(%0A+)',
'(%0D+)',
'(%08+)',
'(%09+)'
);
$inject = join('|', $injections);
$inject = "/$inject/i";
if(preg_match($inject,$str)) {
return true;
}
else {
return false;
}
}
if(checkName($_REQUEST['name']) == TRUE) {
echo "<script>alert('Please enter a Valid Name.');history.back();</script>";
}
elseif (!isset($_POST['email'])) {
echo "<script>alert('Please ensure you have completed all fields before submitting the form. No fields to be left blank.');history.back();</script>";
}
elseif (empty($_POST['name']) || empty($_POST['email'])) {
echo "<script>alert('Please ensure you have completed all fields before submitting the form. No fields to be left blank.Type in only one valid email address.');history.back();</script>";
}
elseif ( isInjected($_POST['email']) ) {
echo "<script>alert('Please ensure you have completed all fields before submitting the form. No fields to be left blank.Type in only one valid email address.');history.back();</script>";
}
elseif(checkEmail($_REQUEST['email']) == FALSE) {
echo "<script>alert('Entered E-Mail is Invalid or The E-Mail does not belong to a valid domain.');history.back();</script>";
}
else{
$host="localhost"; // Host name
$username="root"; // Mysql username
$password="root"; // Mysql password
$db_name="test"; // Database name
$tbl_name="connect_members_temp"; //table name
mysql_connect("$host", "$username", "$password")or die("cannot connect to server");
mysql_select_db("$db_name")or die("cannot select DB");
$confirm_code=md5(uniqid(rand()));
$name=$_POST['name'];
$email=$_POST['email'];
$sql="INSERT INTO $tbl_name(confirm_code, name, email)VALUES('$confirm_code', '$_POST[name]', '$_POST[email]')";
$result=mysql_query($sql);
}
mysql_close();
if($result)
{
// send e-mail to
$to= 'me@localhost';
$thankyou_page = "before_subscription.html";
$email_page = "email_connectivity.html";
$data_page = "email_not_found.html";
$subject="Confirm Your Subscription with XXXXX";
$header="from: XXXXX <donotreply@XXXXX.com>";
$message="Your Confirmation link \r\n";
$message.="Click on this link to confirm your subscription \r\n";
$message.="http://localhost/XXXXX/confirmation.php?passkey=$confirm_code";
// send email
$sentmail = mail($to,$subject,$message,$header);
}
else
{
header( "Location: $data_page" );
}
if($sentmail)
{
header( "Location: $thankyou_page" );
}
else{
header( "Location: $email_page" );
}
?>
您不能在页面上执行重定向和回显消息。当验证失败时,您应该回显消息,然后退出
出现重定向错误的原因是GBD提到的问题。当验证失败时,您永远不会进入设置$data\u页面
的else
子句,而是进入标题(“位置:$data\u页面”)代码>无论如何
此外,在完成此操作后,您将进入发送$thankyou\u page
或$email\u page
的代码。您只能有一个位置:
标题。您需要在发送所需的重定向后退出。使用exit
afterecho
s。如果在重定向之前已回响了某些内容,则重定向不起作用。@ThinkingMonkey-绝对有效。这应该是正确的答案。非常感谢。欢迎。。。。。。。。。。。。。。。。。
<form action="signup.php" method="post">
<fieldset>
<legend>Digital Newsletter</legend>
<div class="fl_left">
<input type="text" name="name" value="Enter name here…" onfocus="this.value=(this.value=='Enter name here…')? '' : this.value ;" />
<input type="text" name="email" value="Enter email address…" onfocus="this.value=(this.value=='Enter email address…')? '' : this.value ;"/>
</div>
<div class="fl_right">
<input type="submit" name="newsletter_go" id="newsletter_go" value="»"/>
</div>
</fieldset>
</form>