在执行脚本之前验证输入字段(texbox)

时间:2014-04-05 20:25:37

标签: php

我想问你,如何处理这个:

  1. 验证输入字段
  2. 如果一切正常,请执行以下脚本,该脚本在数据库中写入字段
  3. 我到现在所拥有的是:

    if($_SERVER['REQUEST_METHOD'] == "POST")
    {
        ...
        $checkField = "";
    
        if (empty($_POST["tb_checkField"]))
            {
                $checkFieldErr = "<br> Field is required!";
            }
        else
            {
                $checkField = $_POST["tb_checkField"];
    
                if (!preg_match("/[-a-z0-9+&@#\/%?=_!:,.;]+/",$checkField))
                {
                    $checkFieldErr = "<br> Invalid value detected!"; 
                }
            }   
        ... 
    }
    
    ...
    <form method="post" action="writeTodatabase.php">
      <table border="0" align="center">
          <tr>
            <td colspan="2"><input name="tb_checkField" type="text" value="<?php echo $checkField;?>" tabindex="1" size="50" maxlength="20"/>          
            <span class="error"><?php echo $checkFieldErr;?></span></td>
          </tr>
       </table>
    </form>
    ...
    
    <td><p>
      <input type="submit" name="submit" value="Save" tabindex="2"/>
    </p></td>
    

    所以当我按下按钮时,直接执行writeTodatabase.php而不检查文本框。

    那么如何告诉他先从文本框中检查这些值,如果可以,请执行writeTodatabase.php?

2 个答案:

答案 0 :(得分:0)

您可以选择在与表单相同的页面上验证输入,也可以在writeTodatabase.php页面上进行验证。

表单标记中的“action”参数决定了您希望发送_POST数据的位置。当您将_POST数据发送到另一个页面时,您不能将验证代码与表单放在同一页面上。您必须将数据发送到当前页面(删除操作参数,或将其值更改为当前页面)或将验证脚本移至writeTodatabase.php。

如果您希望验证代码保留在当前页面上,并删除action参数,则可以使用header()函数在验证成功时重定向到writeTodatabase.php。如果您要使用header()函数,请记住在任何输出之前将验证代码放在文件的顶部。

答案 1 :(得分:0)

我正在制作一个WEB项目,我在PHP中使用了表单输入验证:

if($_SERVER['REQUEST_METHOD']=='POST'){

require('inc/mysqli_connect.php');
$errors=array();

/*Verifica el nombre*/
if(empty($_POST['first_name'])){
    $errors[]='Verifique el campo de Nombre del participante';
}else{
    $fina=mysqli_real_escape_string($dbc, trim($_POST['first_name']));
}

/*Verifica el apellido paterno*/
if(empty($_POST['ape_pat'])){
    $errors[]='Verifique el campo de Apellido Paterno del participante';
}else{
    $appa=mysqli_real_escape_string($dbc, trim($_POST['ape_pat']));
}

/*Verifica el apellido materno*/
if(empty($_POST['ape_mat'])){
    $errors[]='Verifique el campo de Apellido Materno del participante';
}else{
    $apma=mysqli_real_escape_string($dbc, trim($_POST['ape_mat']));
}

/*Verifica el genero*/
if(empty($_POST['gender'])){
    $errors[]='Seleccione el Género del participante';
}else{
    $gend=mysqli_real_escape_string($dbc, trim($_POST['gender']));
}

/*Verifica el correo electronico*/
if(empty($_POST['email'])){
    $errors[]='Verifique el campo de Correo Electrónico del participante';
}else{
    $coel=mysqli_real_escape_string($dbc, trim($_POST['email']));
}

/*and repeat the code above for all the input that you have in your form */

if(empty($errors)){
    $q="INSERT INTO participante(nombre, paterno, materno, genero, correo, fechadenac, procedencia, ocupacion, asistencia, fechareg) VALUES ('$fina','$appa','$apma','$gend','$coel','$dabi','$prov','$ocup','$assi',NOW())";
    $r=mysqli_query($dbc,$q);
    if($r){
        echo '
            <p>
                Nombre: <b>'.$_POST['first_name'].'</b><br />
                Apellido Paterno: <b>'.$_POST['ape_pat'].'</b><br />
                Apellido Materno: <b>'.$_POST['ape_mat'].'</b><br />
                Genero: <b>'.$_POST['gender'].'</b><br />
                Correo Electrónico: <b>'.$_POST['email'].'</b><br />
                Fecha de nacimiento: <b>'.$_POST['date'].'</b><br />
                Procedencia: <b>'.$_POST['provenance'].'</b><br />
                Ocupación: <b>'.$_POST['ocuppation'].'</b><br />
                ¿Asistió? <b>'.$_POST['assistance'].'</b><br />
            </p>
            ';          
    }else{
        echo '
            <h2><a>¡Error del Sistema!</a></h2>
            <p>
                El registro no pudo realizarse debido a un error del sistema. Disculpe los incovenientes.<br />
            </p>
            <p>
                Error: '.mysqli_error($dbc).'<br />
                Query: '.$q.'<br />
            </p>
        ';
    }
    mysqli_close($dbc);
    include ('inc/footer.html');
    exit();
}else{
    echo '
        <p>
            Revise que todo los campos hayan sido llenados correctamente.<br /> 
            Se encontraron los siguientes errores: <br />                           
    ';
    foreach ($errors as $msg) {
        echo " - $msg<br />\n";
    }
    echo '
        </p>
        <p>
            Ingrese los datos faltantes e intente de nuevo.
        </p>
    ';
}
mysqli_close($dbc);

}

mysqli_connect.php有这样的结构:

<?php

DEFINE('DB_USER','root');
DEFINE('DB_PASSWORD','armando');
DEFINE('DB_HOST','localhost');
DEFINE('DB_NAME','flisol');

$dbc=mysqli_connect(DB_HOST,DB_USER,DB_PASSWORD,DB_NAME) OR die ('No es posible conectarse a la Base de datos: '.mysqli_connect_error());

mysqli_set_charset($dbc,'utf8');

顺便说一句,我使用的是粘性表格。享受吧!