0

JavaScript に基づいてフィールドを変更するフォームの検証に問題があります。アイデアは、ラジオ ボタンの選択に基づいて動的に追加されたさまざまなフィールドをフォームに表示するというものです。しかし、PHP は私が作成したロジックに基づいて混乱しているようです。実際に設定されているフィールドを確認するとします。$_POST 変数が isset で設定されているかどうかをチェックする if, else ロジックを書いてみましたが、うまくいきませんでした。今、私が持っているコードは、送信されるフォーム全体をチェックし (送信ボタンの名前をチェックします)、そのチェック内で、次のように他のすべてのフィールドをチェックします。

else if(isset($_POST['subirLic']) && isset($_POST['BusquedaTerm'])){ 
//the first variable is the name of the submit button and the second is a hidden field, then inside the block I check for the existence of the fields for example: if(isset($_POST['whatever'])) {}

問題は、フィールドの最初のセットが送信されていることを確認し、他のフィールド (javascript 関数に基づいて表示されるもの) が送信されていないかどうかも確認したいことです。

決定ロジックを構築しようとしましたが、すべてめちゃくちゃです。現在、上記のようにチェックを行ってから、データベースクエリに入力する必要がある変数が設定されているかどうかを確認しますが、ページの動作が非常に奇妙です。たとえば、追加のフィールドに入力すると、PHP は別のフィールド セット用に作成したクエリを実行しようとします。

次のようなコードに基づいて決定を処理しようとしています。

    if(isset($EgresoLicen)&&isset($IngresoLicen)&&isset($CedLic)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($TesisLicen)) {//here do the query to the database}

コードが行うべきその他の決定は次のようになります。

if(isset($EgresoLicen)&&isset($ingresoLicen)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($AsesorLic)&&isset($TitProyecto)&&isset($Modalidad)) {//same thing }

しかし、前述したように、2 つの if の選択肢にほとんど同じ変数が含まれているため、PHP は明らかに混乱します。

わかりました、コードを貼り付けます。コードを見続けて、正しいとしか思えませんが、明らかにそうではありません。これはページのコード全体の一部であり、さらに 5 つのフォームがあります (データベースに情報を追加するための管理パネルです)。他のフォームは正常に機能しますが、追加のフィールドは追加されないため、それらのすべての $_POST 変数が設定されているかどうかを確認し、それぞれを 1 つずつ検証することができます。 $_POST 変数が繰り返しチェックされ、これによりタスク全体が混乱するという意見がありますが、それを行う他の方法は考えられません。そのため、あなたの提案に感謝します(この時点では、ステートメントが正しくネストされていれば、一晩中働き、できるだけ多くの変更を行ったことを覚えています)。

else if(isset($_POST['subirLic']) && isset($_POST['BusquedaTerm'])){
// the above statement starts with an else if because it is part of a larger set of       forms being checked---------------------
require_once('libreria.php');
if(isset($_POST['titulo'])) $Titulado = $_POST['titulo'];
if (isset($_POST['EgresoLic'])) {$EgresoLicenciado = $_POST['EgresoLic'];
$EgresoLicencia = new Zend_Validate_Date;
if ($EgresoLicencia->isValid($EgresoLicenciado)) $EgresoLicen = $EgresoLicenciado; else     $errorsLic['fechaEgreso']="Escriba la fecha de egreso de licenciatura, formato AAAA-MM-DD (sólo números separados por guiones)"; }
if (isset($_POST['IngresoLic'])) {$IngresoLicenciado= $_POST['IngresoLic'];
$IngresoLicencia = new Zend_Validate_Date;
if ($IngresoLicencia->isValid($IngresoLicenciado)) $IngresoLicen = $IngresoLicenciado;     else $errorsLic['fechaIngreso']="Escriba la fecha de ingreso a licenciatura, formato AAAA-  MM-DD (sólo números separados por guiones"; } 
if (isset($_POST['titulo']))$Titulado = $_POST['titulo'];
if(isset($_POST['genLic'])) {$GenerLicenciado =$_POST['genLic'];
if($GenerLicenciado !="" && preg_match('/^\d{4}/', $GenerLicenciado)==true) $GenerLic=  $GenerLicenciado;
else  $errorsLic['generacion'] = "Escriba el año de su generación en formato AAAA"; }
$cuentaDep= $_POST['cuentaLic']; //Escribir validación de cuenta ---------------->    pendiente
if(isset($_POST['facLic'])) {$FacultadLic= $_POST['facLic']; 
if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b) {6,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==5)) $FacultLic =  $FacultadLic; 
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b) {5,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==4)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==3)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==2)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==1)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==0)) $FacultLic = $FacultadLic;
else $errorsLic['facultad']= "Escriba la facultad en que estudió la licenciatura"; }
if(isset($_POST['titulo'])) $Titulado = $_POST['titulo'];
if(isset($_POST['CedProfLic'])) {$CedulaLic = $_POST['CedProfLic']; if($CedulaLic !="" && preg_match('/\d{2,9}/', $CedulaLic)==true) $CedLic=$CedulaLic; else      $errorsLic['cedula']="Escriba el número de su cédula profesional";} 
if(isset($_POST['TesisLic'])) {$TesisLicenciado = $_POST['TesisLic']; 
if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){11,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==10)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==9)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==8))     $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==7))  $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==6)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==5)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==4)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==3)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==2)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==1))  $TesisLicen=$TesisLicenciado;
else $errorsLic['tesis']="Escriba el título de su tesis de licenciatura"; 
}

include_once ('conect_gral.php');//importante incluir este archivo en todas las  consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
    if(isset($EgresoLicen)&&isset($IngresoLicen)&&isset($CedLic)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($TesisLicen)) {
$cons4="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisLic = "UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen',   Fecha_Ingreso_Lic='$IngresoLicen', Ced_Profesional_Lic='$CedLic', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Tesis_Lic='$TesisLicen' WHERE Apellido_Licen='$registrobuscado'";
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultacuatro=mysql_query($cons4);
$registroLic = mysql_query($regisLic);
$registroGrado = mysql_query($regisGrad);
if (!$registroLic || !$registroGrado) echo "Ocurrió un error al registrar los datos en   la Base de Datos Registro Basico"; 
if (!$consultacuatro) {echo "No se ha podido localizar al usuario";}
} else echo "No se han registrado todos los datos";
//captura de datos de pasantes-->
//PRIMERA PARTE DEL FORMULARIO REVISAR
if(isset($_POST['asesor_proy'])) {$AsesorLicenciado = $_POST['asesor_proy'];
if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0- 9]+\D\b){5,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==4))    $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==3)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==2)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==1)) $AsesorLic=$AsesorLicenciado;
else $errorsLic['asesor_pas']="Escriba el nombre del asesor de su proyecto de pasante";}
if(isset($_POST['modalidad'])) $Modalidad =$_POST['modalidad'];
if(isset($_POST['proyecto'])){$TituloProyecto= $_POST['proyecto']; 
if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==9)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==8)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==7)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==6)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==5)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==4)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==3)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==2)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==1)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==0)) $TitProyecto=$TituloProyecto;
else $errorsLic['proyecto']="Escriba el título de su proyecto de pasante";
}      if(isset($EgresoLicen)&&isset($ingresoLicen)&&isset($CedLic)&&isset($FacultLic)&&isset($GenerLic)&&isset($cuentaDep)&&isset($AsesorLic)&&isset($TitProyecto)&&isset($Modalidad)) {
include_once ('conect_gral.php');//importante incluir este archivo en todas las consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
$cons11="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisPas="UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen', Fecha_Ingreso_Lic='$IngresoLicen', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Asesor_Pas='$AsesorLic', Proyecto_Pas='$TitProyecto', Modalidad_Pas='$Modalidad' WHERE Apellido_Licen='$registrobuscado'"; 
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultaonce=mysql_query($cons11);
$registroPas = mysql_query($regisPas);
$registroGrado = mysql_query($regisGrad);
if (!$registroPas || !$registroGrado) echo "Ocurrió un error al registrar los datos en la Base de Datos";   
if (!$consultaonce) {echo "No se ha podido localizar al usuario";}
}
}

これが非常に大きいことはわかっています。検証ステートメント全体を省略できたかもしれませんが、見つけられないエラーがあるかもしれません。おそらく、代わりに Zend_Validation を使用することをお勧めします。これらの正規表現が 100% 確実ではないからです。どんな侵入状況でも正しく振る舞う。とにかく、ご辛抱いただきありがとうございます。javascript で追加されたフィールド (一連の検証の最後の部分にあるフィールド) を使用してそのコードを実行すると、奇妙なことに、変数が設定されていないかのように、最初のセットで最後の echo ステートメントが生成されます。フォームの最初のフィールド セットに対してスクリプトを実行すると、mysql クエリでエラーが発生し、データベースには何も追加されません。

OK、その大きなコードを投稿して作業を続けたので、データベースへのクエリを正しく処理できるようになりました (もっと注意を払っていれば、もっと早く行うべきでした)。唯一の問題は次のとおりです。1 つ目は、追加されたフィールドを含むフォームを送信すると、2 つの変数が設定されていないというエラー メッセージが表示され続けます (フォームに追加のフィールドがあるだけでなく、以前に表示された他のフィールドも削除されることを追加する必要があります)。しかし、クエリは問題なく機能しています。問題は、PHP で同じフォームを異なるフィールドで管理し、同時に (コードの 1 ブロック内で) クエリを実行したいが、どの $_POST 変数に応じてクエリを作成するかを決定することだと考え続けています。設定されています。その上、今では、配列に入れたエラーが表示されないという問題もあります。

私が最終的に得たコードは次のとおりです。

else    if(isset($_POST['EgresoLic'])&&isset($_POST['IngresoLic'])&&isset($_POST['genLic'])&&isset($_POST['facLic'])&&isset($_POST['titulo'])&&isset($_POST['CedProfLic'])&&isset($_POST['TesisLic']) &&isset($_POST['cuentaLic'])&&isset($_POST['BusquedaTerm'])){
require_once('libreria.php');
$EgresoLicenciado = $_POST['EgresoLic'];
if(!empty($EgresoLicenciado)) {
$EgresoLicencia = new Zend_Validate_Date;
if ($EgresoLicencia->isValid($EgresoLicenciado)) $EgresoLicen = $EgresoLicenciado; else     $errorsLic['fechaEgreso']="Escriba la fecha de egreso de licenciatura, formato AAAA-MM-DD (sólo números separados por guiones)";}
$IngresoLicenciado= $_POST['IngresoLic']; 
if(!empty($IngresoLicenciado)) {
$IngresoLicencia = new Zend_Validate_Date;
if ($IngresoLicencia->isValid($IngresoLicenciado)) $IngresoLicen = $IngresoLicenciado;   else $errorsLic['fechaIngreso']="Escriba la fecha de ingreso a licenciatura, formato AAAA-MM-DD (sólo números separados por guiones";}
$GenerLicenciado =$_POST['genLic'];
if(!empty($GenerLicenciado)) {
if($GenerLicenciado !="" && preg_match('/^\d{4}/', $GenerLicenciado)==true) $GenerLic=  $GenerLicenciado;
else  $errorsLic['generacion'] = "Escriba el año de su generación en formato AAAA";}
$cuentaDep= $_POST['cuentaLic']; //Escribir validación de cuenta ---------------->  pendiente
$FacultadLic= $_POST['facLic']; if(!empty($FacultadLic)){
if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==5)) $FacultLic =     $FacultadLic; 
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==4)) $FacultLic =    $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==3)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==2)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==1)) $FacultLic = $FacultadLic;
else if($FacultadLic !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $FacultadLic)==true && substr_count($FacultadLic, ' ')==0)) $FacultLic = $FacultadLic;
else $errorsLic['facultad']= "Escriba la facultad en que estudió la licenciatura";}
$Titulado = $_POST['titulo'];
$CedulaLic = $_POST['CedProfLic']; if(!empty($CedulaLic)) {if($CedulaLic !="" && preg_match('/\d{2,9}/', $CedulaLic)==true) $CedLic=$CedulaLic; else     $errorsLic['cedula']="Escriba el número de su cédula profesional";}
$TesisLicenciado = $_POST['TesisLic'];
if (!empty($TesisLicenciado)) { 
if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){11,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==10))     $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==9))   $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==8))     $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==7)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==6)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==5)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==4)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==3)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==2)) $TesisLicen=$TesisLicenciado;
else if($TesisLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==1) || (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TesisLicenciado)==true && substr_count($TesisLicenciado, ' ')==2)) $TesisLicen=$TesisLicenciado;
else $errorsLic['tesis']="Escriba el título de su tesis de licenciatura";}
include ('conect_gral.php');//importante incluir este archivo en todas las consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
if (!isset($AsesorLic) || !isset($Modalidad)|| !isset($TitProyecto)) {
$cons4="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisLic = "UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen', Fecha_Ingreso_Lic='$IngresoLicen', Ced_Profesional_Lic='$CedLic', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Tesis_Lic='$TesisLicen' WHERE Apellido_Licen='$registrobuscado'";
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE  Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultacuatro=mysql_query($cons4);
$registroLic = mysql_query($regisLic);
$registroGrado = mysql_query($regisGrad);
if (!$registroLic || !$registroGrado) echo "Ocurrió un error al registrar los datos en la Base de Datos Registro Básico";   
if (!$consultacuatro) {echo "No se ha podido localizar al usuario";}
}
//captura de datos de pasantes-->
//PRIMERA PARTE DEL FORMULARIO REVISAR
//captura de datos de pasantes-->
if(isset($_POST['asesor_proy'])) {
$AsesorLicenciado = $_POST['asesor_proy'];
if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==4))     $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==3)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==2)) $AsesorLic=$AsesorLicenciado;
else if($AsesorLicenciado  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $AsesorLicenciado)==true && substr_count($AsesorLicenciado, ' ')==1))    $AsesorLic=$AsesorLicenciado; 
else $errorsLic['asesor_pas']="Escriba el nombre del asesor de su proyecto de pasante";    }
if(isset($_POST['modalidad']))
$Modalidad =$_POST['modalidad'];
if(isset($_POST['proyecto'])) {
$TituloProyecto= $_POST['proyecto'];
if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){10,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==9)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){9,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==8)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){8,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==7)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){7,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==6)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){6,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==5)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){5,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==4)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){4,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==3)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){3,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==2)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){2,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==1)) $TitProyecto=$TituloProyecto;
else if($TituloProyecto  !="" && (preg_match('/^\D([[:alpha:]ñÑáéíóúüÁÉÍÓÚÜ]*\B[^0-9]+\D\b){1,}/', $TituloProyecto)==true && substr_count($TituloProyecto, ' ')==0))  $TitProyecto=$TituloProyecto;
else $errorsLic['proyecto']="Escriba el título de su proyecto de pasante"; }
include ('conect_gral.php');//importante incluir este archivo en todas las consultas, y sustituirlo por uno seguro con contraseña;
$registrobuscado=$_POST['BusquedaTerm'];
if (!empty($AsesorLic) && !empty($Modalidad) && !empty($TitProyecto)){
$cons11="SELECT CompletoApellidos FROM seguimientoegresados WHERE CompletoApellidos='registrobuscado'";
$regisPas="UPDATE datos_licenciatura SET Fecha_Egreso_Lic='$EgresoLicen', Fecha_Ingreso_Lic='$IngresoLicen', Facultad_Lic='$FacultLic', Generacion_Lic='$GenerLic', Cuenta_Dependencia='$cuentaDep', Asesor_Pas='$AsesorLic', Proyecto_Pas='$TitProyecto', Modalidad_Pas='$Modalidad' WHERE Apellido_Licen='$registrobuscado'"; 
$regisGrad= "UPDATE estudios_grado SET Grado='Licenciado' WHERE Apellidos_Grado='$registrobuscado'";
if($Titulado=='pasante') $regisGrad="UPDATE estudios_grado SET Grado='Pasante' WHERE Apellidos_Grado='$registrobuscado'";
$consultaonce=mysql_query($cons11);
$registroPas = mysql_query($regisPas);
$registroGrado = mysql_query($regisGrad);
if (!$registroPas || !$registroGrado) echo "Ocurrió un error al registrar los datos en la Base de Datos Registro Pasante";  
if (!$consultaonce) {echo "No se ha podido localizar al usuario";}
}
}

他のフォームのフィールドについてもまったく同じ検証を行っており、そのすべてが正規表現をいじっていると言わざるを得ません。これらのフォームでは、エラーをエラーの配列に渡す必要がありますが、このフォームでは、 2 つのクエリを実行していますが、配列を作成できません。また、フォームの 2 番目の (オプションの) フィールドの変数が送信されているかどうかを確認する最初のクエリの部分は、2 つのクエリが連携する方法によってオーバーライドされると思います。

if (!isset($AsesorLic) || !isset($Modalidad)|| !isset($TitProyecto))

その時点では明らかにこれらの変数が設定されていないため、実際には何もチェックしませんが、何をすべきかわかりません。変数に言及する必要がある場合は変数が設定されているかどうかを確認する必要があり、変数が空であるかどうかも確認する必要がありますその時点で true の結果も得られます。オプションのフィールドに入力がないかどうかを実際に確認するにはどうすればよいですか?

4

2 に答える 2

1

2 つの別々のフォームを使用し、異なる名前を付ける必要があるように思えます。そうすれば、どのフォームが送信されたかを簡単に確認できます。

<form name="firstForm" method="post">
<!-- Input tags go here -->
<input type="submit" name="first-submit" value="First Form Submitted" />
</form>

<form name="secondForm" method="post">
<!-- Input tags go here -->
<input type="submit" name="second-submit" value="Second Form Submitted" />
</form>

あなたのHTMLの例について。次に、PHPの場合:

<?php 
if (!empty($_POST['first-submit'])) {
   //do something here;
}

if (!empty($_POST['second-submit'])) {
   //do something here;
}
?>

そうすれば、送信しようとしたフィールドのセットがわかります。次に、チェックを行ってそれらが空であるかどうかを確認し、ハッキングを防ぐために悪い文字を取り除いてください。または、いくつかの準備済みステートメントを実行することをお勧めします。

于 2012-08-16T17:25:09.433 に答える
0

変数が同様の名前である場合、PHP が混乱しないことを心配しないでください :)

おそらく起こっていることは、特定の状況下で両方の if ステートメントが true を返し、ロジックが混乱することです。

お気軽にページ全体を更新してください。お役に立てるよう最善を尽くします。

これがお役に立てば幸いです。

ペサハ

于 2012-08-16T17:20:23.517 に答える