Controllo dati

luigi777

Utente Attivo
14 Feb 2008
1.086
1
38
42
Massa, Italy
Salve, non mi ricordo più come si fa fare il controllo dati se esiste o no e stampare l'errore dicendo "Non trovo il dato inserito nel database".

Questo è il mio script .. solo che ho cambiato metodo di quello che avevo problemi con l'if else if che non eseguivono..

faccio fare ansi che uno copia la chiave e la email dalla email che gli è arrivata ed inserisce nella pagina confirm.

vi posto il codice:

PHP:
<?php
// Includo la connessione al database
require('config.php');


// Se il modulo viene inviato...
if(isset($_POST['submit']))
{
	
	// Dati Inviati dal modulo
	$mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';	// Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
	$key = (isset($_POST['key'])) ? trim($_POST['key']) : '';	
	// Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
	if (!get_magic_quotes_gpc()) {
    	$key = addslashes($key);
	    $mail = addslashes($mail);
	}
	
	if(empty($mail))
	{
	  $error = "EMail vuota";
	}elseif(!isEmail($mail))
		$error = 'Email non valida';
	
	elseif(empty($key))
	{
	  $error = 'chiave vuota';
	}
	else
	{
		
        
       	$query = mysql_query("SELECT _key,mail FROM utenti WHERE _key='$key' and mail='$mail'");
		
        $row = mysql_fetch_assoc($query);
        
         if($row["_key"] == $key)
         {
           $error = "Chiave Non presente nel nostro database.";
           
         }elseif($row["mail"] == $mail)
         {
            $error = "Email Non presente nel nostro database.";
            
         }else
        
        {  
		      if(mysql_num_rows($query)==1)
            {
		
            $attivo = 1;
		// Query per la conferma dell'utente nel database
		
	       	$strSQL = "UPDATE utenti SET attivo = $attivo  WHERE _key='$key' and mail='$mail'";

		mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore ".mysql_error());
        
        echo $strSQL;
        
		$getUser = mysql_query("SELECT * FROM utenti WHERE mail = '".mysql_real_escape_string($mail)."'") or die(mysql_error());
		
		if(mysql_num_rows($getUser)==1)
		{
			$row = mysql_fetch_assoc($getUser);
			$site_email = "meloland@localhost";
			$domain_name = "MeloLand";
			$url_root = "http://localhost/meloland";
			$subject = "Iscrizione venuta alla  land " . $domain_name;
			$message = 'Ciao,<b>'.$row["account"].'</b><br/>
			<p>Grazie per essere registrato nella nostra Land</p>';
				
			inviaMail($row["mail"], $subject, $message, "Land", $site_email);
			$msg = "Confermata la registrazione , controllare la prossima email sia posta indiserata e normale.";
		}
        
        }   
	}
}
}
?>
<?php	if ( isset ( $error ) )	{ echo '			<p class="error">' . $error . '</p>' . "\n";	}	?>
<?php	if ( isset ( $msg ) )	{ echo '			<p class="msg">' . $msg . '</p>' . "\n";	} else {?>
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="post">
 Key<input name="key" type="text" id="key"  /><br />
 Email<input name="mail" type="text" id="mail"  /><br />
 <input name="submit" type="submit" value="Modifica" />
</form>
<?php }?>


sto provando ad fare un browser game semplice..
però mi sono fermato qui.. perché non so come mai questi if non li capisco ancora.

vi ringrazio molto....
buona giornata.
 
Ciao,
ho fatto alcune modifiche prova a vedere se qualcosa puo interessarti
ho commentato
PHP:
<?php
// Includo la connessione al database
require('config.php');

// Se il modulo viene inviato...
if (isset($_POST['submit'])) {

    // Dati Inviati dal modulo
    $mail = (isset($_POST['mail'])) ? trim($_POST['mail']) : '';    
// Metto nella variabile 'mail' il dato inviato dal modulo, se non viene inviato dò di default ''
    $key = (isset($_POST['key'])) ? trim($_POST['key']) : '';
    // Filtro i dati inviati se i magic_quotes del server sono disabilitati per motivi di sicurezza
    if (!get_magic_quotes_gpc()) {
        $key = addslashes($key);
        $mail = addslashes($mail);
    }
    $error = array();
    // controlli che la mail non sia vuota
    if (!empty($mail)) {
        // controlli che sia valida
        if (!isEmail($mail)) {
            // crei l'errore con chiave mail
            $error['mail'] = 'Email non valida';
        }
        // se invece la mail è vuota
    } else {
        $error['mail'] = "EMail vuota";
    }
    // controlli che la chiave non sia vuota
    if (empty($key)) {
        // crei l'errore con chiave chiave
        $error['chiave'] = 'chiave vuota';
    }
    // verifichi che i dati siano presenti entrambi sul db
    $query = mysql_query("SELECT _key,mail FROM utenti WHERE _key='$key' = mail='$mail'");
    // e la query? non la esegui
    $res = mysql_query($query);
    // estrai i dati in un array associativo
    $row = mysql_fetch_assoc($res);
    // se la query va a buon fine ma non hai risultati i dati non sono validi
    if (mysql_query($query) && mysql_num_rows($query) == 0) {
        // crei un errore per l'autenticazione
        $error['auth'] = "Parametri non presenti nel nostro database.";
    }
    // verifichi che nell'array degli errori non ci siano elementi
    if (count($error) == 0) {
        $attivo = 1;
        // Query per la conferma dell'utente nel database
        $strSQL = "UPDATE utenti SET attivo = $attivo  WHERE _key='$key' and mail='$mail'";

        mysql_query($strSQL) OR die("Errore 003, contattare l'amministratore " . mysql_error());

        echo $strSQL;

        $getUser = mysql_query("SELECT * FROM utenti WHERE mail = '" . mysql_real_escape_string($mail) . "'") or die(mysql_error());

        if (mysql_num_rows($getUser) == 1) {
            $row = mysql_fetch_assoc($getUser);
            $site_email = "meloland@localhost";
            $domain_name = "MeloLand";
            $url_root = "http://localhost/meloland";
            $subject = "Iscrizione venuta alla  land " . $domain_name;
            $message = 'Ciao,<b>' . $row["account"] . '</b><br/>
            <p>Grazie per essere registrato nella nostra Land</p>';

            inviaMail($row["mail"], $subject, $message, "Land", $site_email);
            $msg = "Confermata la registrazione , controllare la prossima email sia posta indiserata e normale.";
        }
    }
    // altrimenti se presente anche un solo errore cicli l'array
    foreach ($error as $key => $value) {
        echo "<p class='error'>$value</p>";
    }
} else {
    // se non è settato il post stampi la form
    ?>
    <form action="<?php echo $_SERVER["PHP_SELF"] ?>" method="post">
        Key<input name="key" type="text" id="key"  /><br />
        Email<input name="mail" type="text" id="mail"  /><br />
        <input name="submit" type="submit" value="Modifica" />
    </form>
<?php } ?>

Ho creato un array per gli errori in modo che puoi ciclarlo e stamparli tutti

non ho testato

ciao
 
ciao ho risolto con una funzione che avevo già scritto per controllare i dati e bastato mettere senza il ! e fa la cosa che voglio fare io.

grazie lo stesso..

vi ringrazio molto..

buona giornata.
 

Discussioni simili