php 输入表单多次错误

php input form multiple error

我正在尝试创建一个包含多个字段的表单来完成输入验证。但是在所有的代码中我都收到了很多错误信息,坦白说我找不到问题出在哪里...我试着改了一些晃动但没有结果。

<?php
include_once 'config.php';
ini_set('display_startup_errors',1); 
ini_set('display_errors',1);
error_reporting(-1);

$limite_dimensione = 512000;
$cartella_di_destinazione = "./uploads/eventi_facebook/";
$estensioni_consentite = array ('jpg', 'jpeg', 'png', 'gif');

$ext = strtolower(pathinfo($_FILES["banner_evento"]["name"], PATHINFO_EXTENSION)); 


if(isset($_POST['submit'])){
//Controllo Titolo
if(strlen($_POST['titolo_evento']) < 3){
    $errorf[] = ERRORE_TITOLO_EVENTO;
} else {
    if(!empty($row['titolo_evento'])){
        $errorf[] = ERRORE_TITOLO_EVENTO_USATO;
    }
}
//Controllo Data
$preg_data_evento = $_POST['data_evento'];
if(!preg_match('/^(19|20)\d\d[\-\/.](0[1-9]|1[012])[\-\/.](0[1-9]|[12][0-9]|3[01])$/', $preg_data_evento)){
    $errorf[] = ERROR_DATA_EVENTO;
} else {
    if(!empty($row['data_evento'])){
        $errorf[] = ERRORE_DATA_EVENTO_USATO;
    }
}
//Controllo Banner
if (in_array($ext, $estensioni_consentite)) {
    if ($_FILES["banner_evento"]["size"] < $limite_dimensione) {
            $nuovo_nome = md5 ( time() . $_FILES["banner_evento"]["name"]).'.'.$ext;
            $file_caricato = $cartella_di_destinazione.$nuovo_nome;
            if (move_uploaded_file($_FILES["banner_evento"]["tmp_name"], $file_caricato)) {
                echo 'upload completato';
                echo '<br>'.$file_caricato;
            }
            else {
                    echo 'errore nel caricamento del file';
            }
    }
    else {
            echo 'dimensione massima: '.$limite_dimensione.' byte';
    }
}
else {
echo 'estensione non consentita';
} 

//Controllo Facebook Link
$preg_link_facebook_evento = $_POST['link_facebook_evento'];
if(!preg_match('/(www\.)?facebook\.com/', $preg_link_facebook_evento)){
    $errorf[] = ERROR_DATA_EVENTO;
} else {
    if(!empty($row['titolo_evento'])){
        $errorf[] = ERRORE_TITOLO_EVENTO_USATO;
    }
}   
//Controllo Descrizione Evento
if(strlen($_POST['descrizione_evento']) < 3){
    $errorf[] = ERRORE_TITOLO_EVENTO;
} else {
    if(!empty($row['descrizione_evento'])){
        $errorf[] = ERRORE_TITOLO_EVENTO_USATO;
    }
}   
//Controllo Google Maps Link
if(strlen($_POST['googlemaps_evento']) < 3){
    $errorf[] = ERRORE_TITOLO_EVENTO;
} else {
    if(!empty($row['googlemaps_evento'])){
        $errorf[] = ERRORE_TITOLO_EVENTO_USATO;
    }
}
}

if(!isset($errorf)){
try 
{   $sql = 'INSERT INTO wf_eventi SET titolo_evento = :titolo_evento,
                                        data_evento = :data_evento,
                                        banner_evento = :banner_evento,
                                        link_facebook_evento = :link_facebook_evento,
                                        descrizione_evento = :descrizione_evento,
                                        googlemaps_evento = :googlemaps_evento';
    $s = $pdo->prepare($sql);
    $s->bindValue(':titolo_evento' , $_POST['titolo_evento']);
    $s->bindValue(':data_evento' , $_POST['data_evento']);
    $s->bindValue(':banner_evento' , $nuovo_nome);
    $s->bindValue(':link_facebook_evento' , $_POST['link_facebook_evento']);
    $s->bindValue(':descrizione_evento' , $_POST['descrizione_evento']);
    $s->bindValue(':googlemaps_evento' , $_POST['googlemaps_evento']);
    $s->execute();


}
catch (PDOException $e)
{
    $error = "Errore di aggiunt dell'evento: " . $e->getMessage();
    exit();

}
header('Location: .');
} 
 ?>
 <head>
 <script type="text/javascript"   src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
 <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.11/jquery-ui.min.js">    </script>
<script>
$(function() {
$("#data_evento").datepicker({dateFormat: "yy-mm-dd"});
});;</script></head>
<form action="" enctype="multipart/form-data" method="post">
<?php
if(isset($errorf)){

            foreach ($errorf as $errorf)
            {
                echo '<div style="margin-left: 20px;">'.$errorf.'</div>';
            }
            echo '</div>';
            }
            ?>  
<div>
    <label for="titolo_evento">Titolo :</label>
    <input id="titolo_evento" name="titolo_evento" value="<?php  if(isset($errorf)){ echo $_POST['titolo_evento']; } ?>" type="text">
</div>

<div>
    <label for="data_evento">Data :</label>
    <input id="data_evento" name="data_evento" value="<?php if(isset($errorf)){ echo $_POST['data_evento']; } ?>" type="date">
</div>
<div>
    <label for="banner_evento">Banner :</label>
    <input id="banner_evento" type="file" value="<?php if(isset($errorf)){ echo $_POST['banner_evento']; } ?>" name="banner_evento">
</div>
<div>
    <label for="link_facebook_evento">Link Facebook :</label>
    <input id="link_facebook_evento" name="link_facebook_evento" value="<?php if(isset($errorf)){ echo $_POST['link_facebook_evento']; } ?>"  type="text">
</div>
<div>
    <label for="descrizione_evento">Descrizione :</label>
    <textarea id="descrizione_evento" name="descrizione_evento" value="<?php if(isset($errorf)){ echo $_POST['descrizione_evento']; } ?>" row="3" cols="40" type="text"></textarea>
</div>
<div>
    <label for="googlemaps_evento">Google Maps:</label>
    <input id="googlemaps_evento" name="googlemaps_evento" value="<?php if(isset($errorf)){ echo $_POST['googlemaps_evento']; } ?>" type="text">
</div>
</blockquote>
<div>
    <input type="submit" value="submit" name="submit">
</div>

返回

错误:

Notice: Undefined index: banner_evento on line 11

Notice: Undefined index: titolo_evento on line 89

Notice: Undefined index: data_evento on line 90

Notice: Undefined variable: nuovo_nome on line 91

Notice: Undefined index: link_facebook_evento on line 92

Notice: Undefined index: descrizione_evento on line 93

Notice: Undefined index: googlemaps_evento on line 94

您正在尝试访问尚未设置的数据。

例如:

$ext = strtolower(pathinfo($_FILES["banner_evento"]["name"], PATHINFO_EXTENSION));

可能会更好:

if( isset( $_FILES["banner_evento"] ) ) {
    $ext = strtolower(pathinfo($_FILES["banner_evento"]["name"], PATHINFO_EXTENSION));
}

或者,您已经在使用 if(isset($_POST['submit'])) 检查 POST,因此您可以将该行移动到流程控制的那个部分。