You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP/HTML提交跳转404求助:毕业年龄计算器iPages部署异常

解决iPages部署PHP毕业年龄计算器后表单提交404的问题

看起来你在本地Eclipse里运行正常的毕业年龄计算器,放到iPages(PHP 5.6)服务器后就遇到了表单提交跳404的问题——这种本地与服务器环境的差异类问题很常见,咱们一步步排查解决:

一、先排查最容易踩的文件路径/命名坑

  • iPages服务器对文件大小写敏感:你的表单action指向的是grad.php,一定要确认服务器上的文件是完全同名(比如有没有写成Grad.php或者GRAD.php),Linux环境下大小写不匹配会直接返回404。
  • 确认文件目录位置:检查grad.php是不是和你的HTML文件在同一个目录下,如果不在,要写对相对路径(比如子目录下写成./subfolder/grad.php)。

二、推荐把表单和处理代码合并到同一个文件

很多共享主机(包括iPages)对跨文件的表单提交有路径限制,你可以把表单和PHP处理逻辑放在同一个文件里,修改表单的action为当前文件:

<form action="" method="POST">
<!-- 或者更严谨的写法 -->
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">

这样就彻底避免了路径匹配错误导致的404,代码也更集中好维护。

三、检查iPages的PHP配置限制

iPages的PHP 5.6环境可能有全局变量的安全限制,你可以在代码开头加一段测试代码,确认$_POST是否能正常获取数据:

<?php
var_dump($_POST); // 提交表单后看是否能输出POST数据
?>

如果输出为空,可能需要联系iPages客服开启相关配置,或者检查服务器的php.ini中register_globals、post_max_size等参数的设置(不过PHP 5.6中register_globals默认已关闭,更可能是服务器的安全拦截)。

四、排查.htaccess的重写规则干扰

如果你的网站根目录有.htaccess文件,里面的URL重写规则可能会拦截grad.php的请求。可以暂时把.htaccess重命名为.htaccess.bak,然后测试表单提交是否正常,如果恢复正常,再去排查重写规则中的问题。

五、修正代码里的小语法问题

你的PHP代码里有个不规范的地方:If($bYear> $gYear...这里的If是大写的,虽然PHP不区分大小写,但严格来说统一用小写if更稳妥,避免某些服务器的语法检查报错。

修改后的完整可运行代码

下面是把表单和处理逻辑合并、修正语法后的完整代码,直接上传到iPages就能用:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
<head>
<title>Graduation Calculator</title>
</head>
<body>
<img alt="Graduation Banner" src="Balloon-Banner.jpg" width="1050" height="180">
<form action="" method="POST">
<center>
<br><br><br>
<label><?php echo "Today is " . date("m/d/Y"); ?></label>
<br><br><br>
<label>Enter your birth year: </label>
<input type="text" name="birthYear" />
<label>Enter your graduation year: </label>
<input type="text" name="gradYear" />
<br>
<label>Enter your Birth Month: </label>
<input type="text" name="birthMonth"/>
<label> Enter your graduation month</label>
<input type="text" name="gradmonth" />
<br>
<label> Enter your birthday</label>
<input type="text" name="birthDay" />
<label>Enter your graduation day: </label>
<input type="text" name="gradday" />
<br>
<input type='submit' value='Graduation Age' id='submit' />
</center>
</form>

<?php
$submitted = !empty($_POST);
if ($submitted == true) {
    $bYear = (int)$_POST['birthYear'];
    $gYear = (int)$_POST['gradYear'];
    $gMonth = (int)$_POST['gradmonth'];
    $bMonth = (int)$_POST['birthMonth'];
    $bday = (int)$_POST['birthDay'];
    $gday = (int)$_POST['gradday'];

    $age = getAge($bYear, $gYear, $bMonth, $gMonth, $bday, $gday);
    if($age!= NULL){
        echo "<p>You will be " . $age . " at your graduation.</p>";
    } else{
        echo "<p>INVALID INPUT, PLEASE TRY AGAIN</p>";
    }
}

function getAge( $bYear, $gYear, $bMonth, $gMonth, $bday, $gday) {
    if($bYear > $gYear || $bMonth >12 || $gMonth >12 || $bday >31 || $gday >31 || 
       $bYear == 0 || $gYear == 0 || $bMonth == 0 || $bday == 0 || $gMonth ==0|| $gday == 0){
        return NULL;
    }
    $age = $gYear - $bYear;
    if($bMonth == $gMonth){
        if($bday <= $gday){
            return $age;
        } else{
            $age = $age-1;
            return $age;
        }
    } elseif($bMonth < $gMonth){
        return $age;
    } else{
        return $age-1;
    }
    return $age;
}
?>
</body>
</html>

内容的提问来源于stack exchange,提问作者Kayla Johnston

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:35:33