在另一个php脚本中验证表单


Validation of form in another php script?

我想知道如果在表单中,操作被设置为另一个脚本,是否可以管理错误。

ajoutDevis.php

<FORM name='devis' method='POST' action='ajoutDevisScript.php' id='form'>
<label for="client">Client</label>
<input type='text' id='client' name='client'>
<span class="error">* <?php echo $clientErr;?></span>
</FORM>

ajoutDevisScript.php

if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if(empty($_POST['client'])) {
            $clientErr = "ERROR";
        } else $client = $_POST['client'];

那么,如果输入为空,是否可以在跨度中显示我的错误?或者没有办法用其他脚本作为动作?

谢谢!

session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
        if(empty($_POST['client'])) {
            $clientErr = "ERROR";
            $_SESSION['error] = $clentErr;
            header('location:ajoutDevis.php');
        } else $client = $_POST['client'];
In your ajoutDevis.php file

session_start();
$clientErr = ($_SESSION['error']!='')?$_SESSION['error']:'';
<FORM name='devis' method='POST' action='ajoutDevisScript.php' id='form'>
<label for="client">Client</label>
<input type='text' id='client' name='client'>
<span class="error">* <?php echo $clientErr;?></span>
</FORM>

您需要执行以下操作:

在页面底部的ajoutDevisScript.php页面上添加表单代码。

<?php if(!empty($clientErr)) { ?>
    <FORM name='devis' method='POST' action='ajoutDevisScript.php' id='form'>
    <label for="client">Client</label>
    <input type='text' id='client' name='client'>
    <span class="error">* <?php echo $clientErr;?></span>
    </FORM>
<?php } ?>

这将检查错误变量中是否有任何错误,它将在有错误的同一页上显示表单。

是的,$_SESSION变量可以在会话期间存储值,header()函数可以将用户从第二个脚本重定向回第一个脚本。假设两个文件都在根目录中,ajoutDevis.php:

<?php
session_start();
?>
<FORM name='devis' method='POST' action='ajoutDevisScript.php' id='form'>
    <label for="client">Client</label>
    <input type='text' id='client' name='client'>
    <?php if (isset($_SESSION['clientErr'])) : ?>
        <span class="error">* <?php echo $_SESSION['clientErr'] ?></span>
    <?php endif; ?>
</FORM>

ajoutDevisScript.php:

<?php
session_start();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if(empty($_POST['client'])) {
        $_SESSION['clientErr'] = "ERROR";
        header('Location: ajoutDevis.php');
    } else {
        $client = $_POST['client'];
    }
}
?>

我建议你只在需要的时候打印span。我还建议你检查你的括号,以避免PHP错误。