0

我正在尝试将我们的网站迁移到使用 PHP5 的新主机。以前我们在 PHP4 上。

在用户填写以前在 php4 上工作的调查后,我有一个表单没有提交并重定向到感谢页面。我确定这可能很明显我错过了,但我不明白为什么它不起作用。

当我点击提交时,调查页面重新加载,URL 被添加到末尾?submit=t 并且电子邮件没有发送给我。

我们的survey.php 中的代码如下所示,其中我的电子邮件地址和大部分HTML 表单字段都已删除。有人可以指出我正确的方向吗?

谢谢!

  <?
$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();
    }
}
?>
4

3 回答 3

1

regsiter_globals在较新的 PHP 版本中不活跃。因此,if(!isset($submit))您必须使用if(!isset($_GET['submit'])). 对于发布的值,您使用$_POST['parameter'].

于 2013-09-19T14:37:49.183 回答
0

__FILE__常量可能没有返回您所期望的,或者不是它以前所做的。从文档

自 PHP 4.0.2 起,__ FILE__ 总是包含一个带有符号链接的绝对路径,而在旧版本中,它在某些情况下包含相对路径。

因此,您现在可能会获得绝对路径,而不是相对路径。

还要检查您的新安装是否允许short_open_tags按照文档中的说明进行

于 2013-09-19T14:37:42.960 回答
0

$HTTP_POST_VARS 已弃用。您需要将其替换为 $_POST。

或者,您可以添加 $HTTP_POST_VARS = $_POST; 在脚本的开头避免编辑每一行(不太推荐)。

于 2013-09-19T14:41:52.590 回答