Php 为什么我的表单没有提交和重定向?
我正在尝试将我们的站点迁移到使用PHP5的新主机。之前我们在PHP4上 我有一个表单,在用户填写了之前在php4上进行的调查后,它没有提交并重定向到thankyou页面。我肯定这可能是我遗漏了什么,但我不明白为什么它不起作用 当我单击“提交”时,调查页面将重新加载,URL将?submit=t添加到末尾,并且电子邮件不会发送给我 下面显示了我们survey.php中的代码,其中包括我的电子邮件地址和大部分HTML表单字段。谁能给我指一下正确的方向吗 谢谢Php 为什么我的表单没有提交和重定向?,php,forms,Php,Forms,我正在尝试将我们的站点迁移到使用PHP5的新主机。之前我们在PHP4上 我有一个表单,在用户填写了之前在php4上进行的调查后,它没有提交并重定向到thankyou页面。我肯定这可能是我遗漏了什么,但我不明白为什么它不起作用 当我单击“提交”时,调查页面将重新加载,URL将?submit=t添加到末尾,并且电子邮件不会发送给我 下面显示了我们survey.php中的代码,其中包括我的电子邮件地址和大部分HTML表单字段。谁能给我指一下正确的方向吗 谢谢 <? $APP_ROOT = "
<?
$APP_ROOT = "../";
$FILE = __FILE__;
$TITLE="Service Survey";
if(!isset($submit)) {
include($APP_ROOT."include/header.php");
include($APP_ROOT."include/nava.php");
?>
<div class="bodymargin">
<img src="<?=$WEB_ROOT;?>images/titles/<?=$SECTION."_".$FILE;?>.gif" width="400" height="36"><br>
<br>
<form method="POST" action="<?=$FILE;?>.php?submit=t">
<?
if(isset($error)) {
while(list($key, $value) = each($HTTP_GET_VARS)) {
$$key = stripslashes($value);
}
print("<p class=\"alert\">". urldecode($error) . "</p>\n");
}
?>
<input type="text" name="name" value="<?=$name;?>">
</form>
<?
include($APP_ROOT."include/navb.php");
include($APP_ROOT."include/footer.php");
} else {
include_once($APP_ROOT . "functions/index.php");
include_once($APP_ROOT . "functions/form_validation.php");
$CONTINUE = TRUE;
$valid = new Validation($HTTP_POST_VARS);
if($CONTINUE = $valid->success) {
$to = "myemailaddress";
$subject = "Service Survey";
$from_email = $to;
$from_name = "mysite.com";
$headers = "From: $from_name<$from_email>\n";
$headers .= "Reply-To: <$email>\n";
$headers .= "Return-Path: <$from_email>\n";
$body = "The following information was just posted \n";
unset($HTTP_POST_VARS['required_fields']);
reset($HTTP_POST_VARS);
while(list($key, $value) = each($HTTP_POST_VARS)) {
if(!empty($value)) {
$body .= proper_form($key) . ": " . stripslashes($value) ."\n";
}
}
$body .= "\nThis is an automated message, please do not respond.";
mail($to,$subject,$body,$headers);
$URL = $WEB_ROOT . "/customer/thanks.php?form=" . $FILE;
server_redirector($URL);
} else {
while(list($key, $value) = each($HTTP_POST_VARS)) {
$rebound .= "&$key=" . urlencode(stripslashes($value));
}
$URL = $WEB_ROOT . "customer/survey.php?error=". urlencode(nl2br($valid->errors)) . $rebound;
server_redirector($URL);
die();
}
}
?>
图像/标题/.gif“width=“400”height=“36”>
\uuuu FILE\uuuu
常量可能没有返回您期望的值,或者没有返回它以前执行的值。从
由于PHP4.0.2,文件总是包含一个绝对路径,并解析符号链接,而在旧版本中,在某些情况下它包含相对路径
所以你现在可能得到的是一条绝对路径,而不是一条相对路径
另外,请检查您的新安装是否允许short\u open\u标记
,因为regsiter\u globals
在较新的PHP版本中未处于活动状态。
因此,如果(!isset($submit))
您必须使用if(!isset($\u GET['submit'])
。对于发布的值,您使用$\u POST['parameter']
$HTTP\u POST\u VARS。您需要将其替换为$\u POST
或者,您可以在脚本开头添加$HTTP\u POST\u VARS=$\u POST;,以避免编辑每一行(不推荐)。action=“.php?submit=t“>我认为迪特尔的观点很有道理。如果是
,那么这个脚本使用的是“magic constants”,只有在安装并启用了某些扩展时才可用。我会将这些值输出到屏幕,以确保这些值已设置且不为空。这里有更多。。。很好,但我刚刚检查了一下,\uuuuuu文件
正在返回我预期的调查结果。还检查了短的\u打开\u标签,这也是允许的。。。谢谢就是这样。一旦我更换了它,美元的帖子就一切都好了。谢谢