modulo registrazione utenti, cicli if di verifica

  • Creatore Discussione Creatore Discussione asevenx
  • Data di inizio Data di inizio

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Salve, ho creato un modulo per la registrazione degli utenti su di un sito. Il modulo prevede nome, password, email, squadra, avatar. Per l'avatar avevo previsto un modulo per il caricamento del file nel server. Il tutto funziona correttamente, ma vorrei che l'avatar non sia necessario per la registrazione. Il problema è che se non inserisco l'avatar, e quindi non carico il file, il processo di registrazione si blocca su una pagina bianca. Come posso fare?

questo è il codice
PHP:
<?php

$nome_utente = $_POST['nome_utente'];
$password_utente = $_POST['password_utente'];
$password_criptata = md5($password_utente);
$email_utente = $_POST['email_utente'];
$squadra_utente = $_POST['squadra_utente'];
$avatar_utente = $_POST['avatar_utente'];

//dati database
$host = "localhost";
$username = "torneoborgonara";
$password = "";
$database = "my_torneoborgonara";
$tabella = "utenti";

//connessione e invio al DB
$connessione = mysql_connect($host, $username, $password) or die("Connessione DB fallita");
mysql_select_db($database, $connessione) or die("Selezione DB fallita");

//controllo che i campi obbligatori non siano vuoti
if(!$nome_utente) {
			  $msg = "
<table>
	<tr>
		<td><img src=\"ico/error.png\"></td>
        <td class='mess'><b>Non hai inserito un nome utente!</b><br>Torna indietro e modifica i tuoi dati</td>
    </tr>
</table>";

} else {
	
	if(!$password_utente) {		
				  $msg = "
	<table>
		<tr>
			<td><img src=\"ico/error.png\"></td>
			<td class='mess'><b>Non hai inserito una password!</b><br>Torna indietro e modifica i tuoi dati</td>
		</tr>
	</table>";

	} else {
	
		if(!$email_utente) {		
					  $msg = "
		<table>
			<tr>
				<td><img src=\"ico/error.png\"></td>
				<td class='mess'><b>Non hai inserito una email!</b><br>Torna indietro e modifica i tuoi dati</td>
			</tr>
		</table>";
	
		} else {
		
			//controllo email
			function chkEmail($email)
			{
				// elimino spazi, "a capo" e altro alle estremità della stringa
				$email = trim($email);
			
				// se la stringa è vuota sicuramente non è una mail
				if(!$email) {
					return false;
				}
			
				// controllo che ci sia una sola @ nella stringa
				$num_at = count(explode( '@', $email )) - 1;
				if($num_at != 1) {
					return false;
				}
			
				// controllo la presenza di ulteriori caratteri "pericolosi":
				if(strpos($email,';') || strpos($email,',') || strpos($email,' ')) {
					return false;
				}
			
				// la stringa rispetta il formato classico di una mail?
				if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
					return false;
				}
			
				return true;
			}

			$email = $email_utente;
	
			if(chkEmail($email)) {
			
				if (!$avatar_utente) {

				$target2 = "avatar/standard.png"	

//carico i dati con avatar standard
$commenti = "INSERT INTO $tabella (id,nome,pass,avatar,email,squadra) VALUES('','$nome_utente','$password_criptata','$target2','$email_utente','$squadra_utente')"; 
mysql_query($commenti) or die("Errore...\n<br />Query: " . $commenti . "<br />\nDettagli: (" . mysql_errno() . ") " . mysql_error()); 			
				
//header("refresh:3; url=".$_SERVER['HTTP_REFERER']);
header("refresh:3; url=index.php");	

				} else {
			
					do {
						if (is_uploaded_file($_FILES['avatar']['tmp_name'])) {
							
							// Controllo che il file non superi i 18 KB
							if ($_FILES['avatar']['size'] > 18432) {
								  $msg = "
					<table>
						<tr>
							<td><img src=\"ico/error.png\"></td>
							<td class='mess'><b>Il file caricato non deve superare i 18 KB!</b><br>Torna indietro e carica un nuovo file/td>
						</tr>
					</table>";
								  break;
							}
							
							// Realizzo un nuovo nome casuale per il file. 
							$ran = rand () ;
							$ran2 = $ran.".";
							$target = "avatar/";
							$ext = "jpg";
							$target2 = $target . $ran2.$ext; 
							
							echo" il file si chiama ".$target2;
							
							// Funzione per separare l'estensione dal resto del nome file 
							//function findexts ($filename) 
							//{ 
								//$filename = strtolower ($filename); 
								//$exts = split("[/\\.]", $filename); 
								//$n = count($exts)-1; 
								//$exts = $exts[$n]; 
								//return $exts; 
								
								//echo $filename;		
							//} 

							
							// Ottengo le informazioni sull'immagine
							list($width, $height, $type, $attr) = getimagesize($_FILES['avatar']['tmp_name']);
							
							// Controllo che le dimensioni (in pixel) non superino 160x180
							if (($width > 160) || ($height > 180)) {
								  $msg ="
					<table>
						<tr>
							<td><img src=\"ico/error.png\"></td>
							<td class='mess'><b>Le dimensioni del file non possono superare i 160x180!</b><br>Torna indietro e carica un nuovo file</td>
						</tr>
					</table>";
								  break;
							}
							
							// Controllo che il file sia in uno dei formati GIF, JPG o PNG
							//if (($type!=1) && ($type!=2) && ($type!=3)) {
								  //$msg = "<p>Formato non corretto!!</p>";
								  //break;
							//}
							
							// Verifico che sul sul server non esista già un file con lo stesso nome
							//if (file_exists('avatar/'.$_FILES['avatar']['name'])) {
							  //$msg = "File già esistente sul server. Rinominarlo e riprovare.";
							  //break;
							//}

							//$ext = findexts ($_FILES['uploaded']['name']); 
						
							// Sposto il file nella cartella da me desiderata rinominandolo come in precedenza
							if (move_uploaded_file($_FILES['avatar']['tmp_name'], $target2)) {
								  $msg = "
					<table>
						<tr>
							<td><img src=\"ico/ok.png\"></td>
							<td class='mess'><b>Registrazione avvenuta con successo!</b><br>Verrai rindizzato alla home page tra 3 secondi</td>
						</tr>
					</table>";
					
//carico i dati con avatar scelto
$commenti = "INSERT INTO $tabella (id,nome,pass,avatar,email,squadra) VALUES('','$nome_utente','$password_criptata','$target2','$email_utente','$squadra_utente')"; 
mysql_query($commenti) or die("Errore...\n<br />Query: " . $commenti . "<br />\nDettagli: (" . mysql_errno() . ") " . mysql_error()); 			
					
							//header("refresh:3; url=".$_SERVER['HTTP_REFERER']);
							header("refresh:3; url=index.php");				

								  break;
							} else {
								$msg = "Errore caricamento file";
							}
							
						}
					} while (false);
				 			
				
				
			} else {
				 
				$msg = "
				<table>
					<tr>
						<td><img src=\"ico/error.png\"></td>
						<td class='mess'><b>Formato email errato!</b><br>Torna indietro e modifica i tuoi dati</td>
					</tr>
				</table>";
	
			}
		}
	}
}	

echo $msg;

?>
 
volevo aggiungere che l'errore che mi viene dato è il seguente

Parse error: syntax error, unexpected T_VARIABLE in /membri/torneoborgonara/conferma_registrazione.php on line 110

relativo alla riga

PHP:
$commenti = "INSERT INTO $tabella (id,nome,pass,avatar,email,squadra) VALUES('','$nome_utente','$password_criptata','$target2','$email_utente','$squadra_utente')";
 
Guarda di solito non si chiede l'avatar alla registrazione oppure se si chiede è facoltativo (come vuoi fare tu).
Intanto prova a stampare la query (echo $commenti) e commenta l'esecuzione della stessa, copia quello che ti che ottieni in phpmyadmin e vedi che errore ti da, se te ne da.
 
infatti era mia intenzione non rendere indispensabile l'utilizzo dell'avatar per la registrazione, ma volevo comunque utilizzarlo come opzione. Il problema è che se procedo alla registrazione senza inserire l'avatar mi da quel problema che ho riportato. Credo proprio che il problema sia proprio nella quary (la prima), infatti l'errore fa riferimento proprio a $commenti
 
Prova a stampare la query. Prendi il risultato e metti lo direttamente in phpmyadmin e vedi che dice.
 
PHP:
echo $commenti;
Poi metti direttamente la query dove hai e vedi il db (phpmyadmin) premi sql e li dentro metti la query che ti stampa. Dai invio e vedi gli errori che ti da.
 
non posso stampare $commenti, l'errore sta proprio li, mi dice che è unexpected T_VARIABLE
 
ho provato a fare anche in un altro modo, ovvero inserendo una if prima del ciclo do per l'inserimento dell'immagine. Come condizioni ho messo $avatar_utente == "" (ovvero quando la stringa della variabile è vuota), ma in questo anche se carico l'immagine poi nel db non viene registrata (al suo posto $target2 = "avatar/standard.png", che dovrebbe invece verificarsi solo quando la stringa è vuota, e non sempre).

PHP:
$nome_utente = $_POST['nome_utente'];
$password_utente = $_POST['password_utente'];
$password_criptata = md5($password_utente);
$email_utente = $_POST['email_utente'];
$squadra_utente = $_POST['squadra_utente'];
$avatar_utente = $_POST['avatar_utente'];

//dati database
$host = "localhost";
$username = "torneoborgonara";
$password = "";
$database = "my_torneoborgonara";
$tabella = "utenti";

//connessione e invio al DB
$connessione = mysql_connect($host, $username, $password) or die("Connessione DB fallita");
mysql_select_db($database, $connessione) or die("Selezione DB fallita");

//controllo che il campo nome non sia già usato

//controllo che i campi obbligatori non siano vuoti
if(!$nome_utente) {
			  $msg = "
<table>
	<tr>
		<td><img src=\"ico/error.png\"></td>
        <td class='mess'><b>Non hai inserito un nome utente!</b><br>Torna indietro e modifica i tuoi dati</td>
    </tr>
</table>";

} else {
	
	if(!$password_utente) {		
				  $msg = "
	<table>
		<tr>
			<td><img src=\"ico/error.png\"></td>
			<td class='mess'><b>Non hai inserito una password!</b><br>Torna indietro e modifica i tuoi dati</td>
		</tr>
	</table>";

	} else {
	
		if(!$email_utente) {		
					  $msg = "
		<table>
			<tr>
				<td><img src=\"ico/error.png\"></td>
				<td class='mess'><b>Non hai inserito una email!</b><br>Torna indietro e modifica i tuoi dati</td>
			</tr>
		</table>";
	
		} else {
		
			//controllo email
			function chkEmail($email)
			{
				// elimino spazi, "a capo" e altro alle estremità della stringa
				$email = trim($email);
			
				// se la stringa è vuota sicuramente non è una mail
				if(!$email) {
					return false;
				}
			
				// controllo che ci sia una sola @ nella stringa
				$num_at = count(explode( '@', $email )) - 1;
				if($num_at != 1) {
					return false;
				}
			
				// controllo la presenza di ulteriori caratteri "pericolosi":
				if(strpos($email,';') || strpos($email,',') || strpos($email,' ')) {
					return false;
				}
			
				// la stringa rispetta il formato classico di una mail?
				if(!preg_match( '/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/', $email)) {
					return false;
				}
			
				return true;
			}

			$email = $email_utente;
	
			if(chkEmail($email)) {
			
				if ($avatar_utente == "") {
							
							$target2 = "avatar/standard.png";
							
//carico i dati con avatar scelto
$commenti = "INSERT INTO $tabella (id,nome,pass,avatar,email,squadra) VALUES('','$nome_utente','$password_criptata','$target2','$email_utente','$squadra_utente')"; 
mysql_query($commenti) or die("Errore...\n<br />Query: " . $commenti . "<br />\nDettagli: (" . mysql_errno() . ") " . mysql_error());	
					
//header("refresh:3; url=".$_SERVER['HTTP_REFERER']);
header("refresh:3; url=index.php");	

								  $msg = "
							<table>
								<tr>
									<td><img src=\"ico/ok.png\"></td>
									<td class='mess'><b>Registrazione avvenuta con successo!</b><br>Verrai rindizzato alla home page tra 3 secondi</td>
								</tr>
							</table>";
				
				} else {
					
					do {
						if (is_uploaded_file($_FILES['avatar']['tmp_name'])) {
							
							// Controllo che il file non superi i 18 KB
							if ($_FILES['avatar']['size'] > 18432) {
								  $msg = "
							<table>
								<tr>
									<td><img src=\"ico/error.png\"></td>
									<td class='mess'><b>Il file caricato non deve superare i 18 KB!</b><br>Torna indietro e carica un nuovo file</td>
								</tr>
							</table>";
								  break;
							}
							
							// Realizzo un nuovo nome casuale per il file. 
							$ran = rand () ;
							$ran2 = $ran.".";
							$target = "avatar/";
							$ext = "jpg";
							$target2 = $target . $ran2.$ext; 
							
							//echo" il file si chiama ".$target2;
							
							// Funzione per separare l'estensione dal resto del nome file 
							//function findexts ($filename) 
							//{ 
								//$filename = strtolower ($filename); 
								//$exts = split("[/\\.]", $filename); 
								//$n = count($exts)-1; 
								//$exts = $exts[$n]; 
								//return $exts; 
								
								//echo $filename;		
							//} 
								
							// Ottengo le informazioni sull'immagine
							list($width, $height, $type, $attr) = getimagesize($_FILES['avatar']['tmp_name']);
							
							// Controllo che le dimensioni (in pixel) non superino 160x180
							if (($width > 160) || ($height > 180)) {
								  $msg ="
							<table>
								<tr>
									<td><img src=\"ico/error.png\"></td>
									<td class='mess'><b>Le dimensioni del file non possono superare i 160x180!</b><br>Torna indietro e carica un nuovo file</td>
								</tr>
							</table>";
								  break;
							}
							
							// Controllo che il file sia in uno dei formati GIF, JPG o PNG
							//if (($type!=1) && ($type!=2) && ($type!=3)) {
								  //$msg = "<p>Formato non corretto!!</p>";
								  //break;
							//}
							
							// Verifico che sul sul server non esista già un file con lo stesso nome
							//if (file_exists('avatar/'.$_FILES['avatar']['name'])) {
							  //$msg = "File già esistente sul server. Rinominarlo e riprovare.";
							  //break;
							//}
								//$ext = findexts ($_FILES['uploaded']['name']); 
						
							// Sposto il file nella cartella da me desiderata rinominandolo come in precedenza
							if (move_uploaded_file($_FILES['avatar']['tmp_name'], $target2)) {
								  $msg = "
							<table>
								<tr>
									<td><img src=\"ico/ok.png\"></td>
									<td class='mess'><b>Registrazione avvenuta con successo!</b><br>Verrai rindizzato alla home page tra 3 secondi</td>
								</tr>
							</table>";
							
//carico i dati con avatar scelto
$commenti = "INSERT INTO $tabella (id,nome,pass,avatar,email,squadra) VALUES('','$nome_utente','$password_criptata','$target2','$email_utente','$squadra_utente')"; 
mysql_query($commenti) or die("Errore...\n<br />Query: " . $commenti . "<br />\nDettagli: (" . mysql_errno() . ") " . mysql_error());	
					
//header("refresh:3; url=".$_SERVER['HTTP_REFERER']);
header("refresh:3; url=index.php");				

								break;
							} else {
								$msg = "Errore caricamento file";
							}
						}
					} while (false);
				} 	 				
					
			} else {
				 
				$msg = "
				<table>
					<tr>
						<td><img src=\"ico/error.png\"></td>
						<td class='mess'><b>Formato email errato!</b><br>Torna indietro e modifica i tuoi dati</td>
					</tr>
				</table>";
	
			}
		}
	}
}	

echo $msg;
 
Per stamparla basta commentare l'istruzione di esecuzione della query.
 

Discussioni simili