verifica caratteri per email e password

paperinik4

Utente Attivo
29 Mag 2011
1.811
0
36
Roma
www.ricetteagogo.it
Salve a tutti,

Sto cercando di creare un controllo d'inserimento caratteri per l'email e la password. Ho questo spezzone qua, ma mi da errore e chiedo aiuto a voi:

controllo caratteri:


PHP:
 $cognome = $mysqli->real_escape_string(trim($_POST['cognome']));
 
#Inizamo a controllare il carattere inserito per l'email che sia corretto
  
  if((!isset($_POST['email'])) || (!eregi("^([a-z0-9\._-]+)(@[a-z0-9.-]+)(\.{1}[a-z]{2,4})$", $_POST['email'])))
  {
    echo "Attenzione, formato email non valido.";
  }
  // controllo sul formato della password deve essere alfanumerica e non deve superare i dieci caratteri di lunghezza
  elseif((!isset($_POST['password'])) ||  ($_POST['password'] == "") || (!preg_match("/^[a-z0-9@]+$/i", $_POST['password'])) || (strlen(trim($_POST['password']) < 3)))
  {
    echo "La password deve essere alfanumerica e non inferiore ai 3 caratteri.";
  }else{
    // se i parametri sono corretti popoliamo il database
    $email = $_POST['email'];
   # $password = sha1($_POST['password']);

$checkemail = mysql_query("SELECT id FROM utenti WHERE email='$email'") or die (mysql_error());
    if(mysql_num_rows($ctrl_mail)>0) {
        echo "Attenzione l'email è valida";
        
    }else{
        echo "Attenzione l'email risulta essere presnete nel db !!! Contattare l'amministratore del sito grazie.";
        
    }
    }

La password deve essere inferiore ai due caratteri max. 8 caratteri e deve includere sia numeri che lettere e caratteri speciali e qua c'è l'inghippo in cui mi so fermato. Inoltre volevo sapere se questa è corretta oppure no:

$cognome = $mysqli->real_escape_string(trim($_POST['cognome']));

Spero che qualcuno mi possa aiutare nel modo più semplice possibile grazie.
 
ciao
ti shematizzo
per il controllo dell'email ti conviene
PHP:
<?php
//...
$email=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
	echo "Attenzione, formato email non valido.";
}//....
?>
poi per la pass nel preg_match metti la lungheza, eviti tutto quell'ambaradan

PHP:
<?php
{!preg_match("/^[A-Za-z0-9@]{3,10}+$/i", $_POST['password']))//.....
?>

la funzione eregi è deprecata e passa alle funzioni mysqli, le vecchie funzioni mysql sono deprecate e comunque non puoi mescolarle
si è corretta, pero vedo che usi il procedurale, quella è a oggetti e non mescolare la programmazione procedura a quella ad oggetti
 
Perdonami, quindi è meglio quella procedurale anzicchè ad oggetti. Ancora il link non l'ho visto ma lo vedo ora. L'unica cosa che non capisco quando mi dici che "non mescolare la programmazione procedura a quella ad oggetti ", nel mio caso dov'è il mescolamento ??? Non riesco ad individuarlo.
 
Ultima modifica:
Ciao Borgo,

Innanzi tutto ti ringrazio per avermi risposto. Secondo ti volevo dire che mi da un bel "!" rosso su questa stringa:

$email=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
echo "Attenzione, formato email non valido.";
}//....

Come mai ???
 
problemi con mysqli

Salve a tutti,

Spero di non crossare non è mia intenzione ma voirrei sapere qual'ìè la sintassi corretta:

prima sintassi in mysqli:

PHP:
$id = mysqli_real_escape_string($con, $id);
$cognome = mysqli_real_escape_string($con, $cognome);
$nome = mysqli_real_escape_string($con, $nome);
$username = mysqli_real_escape_string($con, $username);
$passwrod = mysqli_real_escape_string($con, $password);
$rippassword = mysqli_real_escape_string($con, $rippassword);
$email = mysqli_real_escape_string($con, $email);
$ripemail = mysqli_real_escape_string($con, $ripemail);

secondo tipo di sintassi mysqli:

PHP:
$id = $mysqli->real_escape_string(trim($_POST['id'])); 
$cognome = $mysqli->real_escape_string(trim($_POST['cognome'])); 
$nome = $mysqli->real_escape_string(trim($_POST['nome'])); 
$username = $mysqli->real_escape_string(trim($_POST['username'])); 
$password = $mysqli->real_escape_string(trim($_POST['password'])); 
$rippassword = $mysqli->real_escape_string(trim($_POST['rippassword']));  
$email = $mysqli->real_escape_string(trim($_POST['email']));  
$ripemail = $mysqli->real_escape_string(trim($_POST['ripemail']));

In entrambi i casi il mio editor netbeans mi da un triangolino giallo e mi da il seguente errore:

Fatal error: call to member function real_escape_string() on null

Cosa vuol dire e come posso eliminarlo ??? Grazie.
 
ciao
che la funzione real_escape_string non accetta un valore NULL, cioè probabilmente vuoro
entrambe giuste dipende su usi la programmazione procedurale (la prima) o a oggetti (la seconda)
 
Io vorrei adoperare la prima che mi sembra che sia la più semplice e la più facile. E come le debbo riempire ???? perchè sennò non c'ho capito niente. Perdonami se ti chiedo una mano ma vorrei imparare al meglio.
 
problemi con mysqli

Allora,

Ricapitolando io avrei fatto così:

iscrizione.php

PHP:
<!DOCTYPE html>

<html>
    <head>
        <meta charset="UTF-8">
        <title>Modulo Iscrizione</title>

      <style type="text/css">
        
#intestazione{
 width:100%;
 height:100px;
 position:absolute;
 font-family: Comic Sans MS;
 top:0px;
 left:0px;
 text-align: center;
}
#divhr {
    
position:absolute;
top: 100px;    
font-family:Comic Sans MS;
}
#messaggio {
    
position:relative;
top:400px;    
font-family:Comic Sans MS;
color:#ff0000;
}
.label {
 display: inline-block;
 widht: 9em;
 }   
 form: valid input[tyupe="submit"] {
 background: red;   
 }   
</style>        
        
<div id ="intestazione"> 
    <H1>BENVENUTI NEL MODULO D'ISCRIZIONE</H1>
    <hr>
</div>
  
    <div id ="divhr">
    <form method="POST" autocomplete ="off" action="<?php $_SERVER['PHP_SELF'] ?>">

<label for =campo-cognome"> Nome: </label> <input type ="text" required id = "campo-cognome"  name = "cognome">
                
<p> <p><label for =campo-nome"> Nome: </label> <input type ="text" required id = "campo-nome"  name = "nome"> </p></p>
  
<p> <p><label for =campo-username"> Username: </label> <input type ="text" required id = "campo-username"  name = "username"> </p></p>        
       
<p> <p><label for =campo-email"> E-Mail: </label> <input type ="text" required id = "campo-email"  name = "email"> </p></p>        

<p> <p><label for =campo-ripemail"> Ripeti-Email: </label> <input type ="text" required id = "campo-ripemail"  name = "ripemail"> </p></p>        

<p> <p><label for =campo-passwod"> Password: </label> <input type ="password" required id = "campo-password"  name = "password"> </p></p>        

<p> <p><label for =campo-rippassword"> Ripeti-Password: </label> <input type ="password" required id = "campo-rippassword"  name = "rippassword"> </p></p>        
  
  
<div id = "center">
</p>  
                    <input type="submit" name="log" value="Invio iscrizione" />
</div>
        </div>
        
            </form>
       
    </head>
    <body>
        <?php
  if(!isset($_POST[log])){
require_once ("connettimysqli.php");
require_once ("data.php");
echo"</hr>";


$id = mysqli_real_escape_string($con, $id);
$cognome = mysqli_real_escape_string($con, $cognome);
$nome = mysqli_real_escape_string($con, $nome);
$username = mysqli_real_escape_string($con, $username);
$passwrod = mysqli_real_escape_string($con, $password);
$rippassword = mysqli_real_escape_string($con, $rippassword);
$email = mysqli_real_escape_string($con, $email);
$ripemail = mysqli_real_escape_string($con, $ripemail);



 
#Inizamo a controllare il carattere inserito per l'email che sia corretto
  
  $errore = "";

#Inizamo a controllare il carattere inserito per l'email che sia corretto
  if(!isset($_POST[log])){
$email=filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
    echo "Attenzione, formato email non valido.";
}// 


if($errore==""){
    
$query=("INSERT INTO utenti (cognome, nome, username,email, password) VALUES('$nome','$cognome','$username','$email','$password')");
$result=mysqli_query($con,$query);

    echo("<p> Inserimento avvenuto correttamente <p>");
} else{
    echo("<br>Inserimento non eseguito");
}
}
}
             
        
        ?>
    </body>
</html>

Risultato della pagina è il seguente:

Risultato della pagina.PNG

Dove sbaglio ???? Non riesco a capirlo l'ho rifatto duecento volte ma nada :( Spero in voi in una mano. Grazie. Ovviamente il messaggio non deve apparire in quella posizione ma in fondo dopo il tasto "Invio dati".
 
Ultima modifica:
problemi con mysqli

Salve a tutti,

Ho iniziatod a capo il mio codcie che avevo postato mi sono accorto che è un gran casino 8scusate x il termine) Detto ciò posto il nuovo codice che sto facendo campo x campo cerncando di mettere anche i controlli necessari per gli eventuali "sbadati" che non mettono la "@" nell'inserimento email oppure che lasciano il campo vuoto. Questo è quanto ho fatto in pochi minuti adesso.

provains.php

PHP:
<?php
    
     
        require_once("connettimysqli.php");
        require_once("data.php");
     echo "</hr>";
 
     
$id = mysqli_real_escape_string($con, $id);
$nome = mysqli_real_escape_string($con, $nome);
$cognome = mysqli_real_escape_string($con, $cognome);
$username = mysqli_real_escape_string($con, $username);


echo '<div class ="messaggio">';

$errore = "";

if (cognome == ""){$errore .= "Attenzione il campo è vuoto";}


   
   ?>
<div id ="messaggio">
    <?php
if(!empty($_POST)){
    
$query=("INSERT INTO utenti (cognome, nome, username) VALUES('$cognome','$nome','$username'')");
$result=mysqli_query($con,$query);

if($result){
    echo("<p> Inserimento avvenuto correttamente <p>");
} else{
    echo("<br>Inserimento non eseguito");
}
}
?>
</div>
    </body>
</html>

Questo spezzone di codice che posto isolatamente:

PHP:
$errore = "";

if (cognome == ""){$errore .= "Attenzione il campo è vuoto";}

Dovrebbe far si che se il campo "cognome" risulta vuoto alla fine della registrazione glielo indica purtroppo semplice php, mi piacerebbe farlo in java o ajax ma sembra non funzionare. Inoltre non mi memorizza i dati :( Domanda perchè tutte queste complicazione ogni volta che debbo fare qualcosa di nuovo ???? Risposta: bah !!!! Spero che qualcuno mi possa aiutare, grazie.
 
Ho fatto le correzioni segnalatomi da te, ma ora mi continua a dare la memorizzazione dati sempre bianco non so pià che pesci prendere. Considera che è lo stesso listato che adoperavo con la vecchia versione di mysql corretta a suo tempo e funzionava. con mysqli non mi funziona :(


PHP:
<!DOCTYPE html>
      
<html>
    <head>
         <meta http-equiv="Content-Type" content="text/html; charset="ISO-8859-1" />        
        <title>ISCRZIONE PROVA</title>
    

      <style type="text/css">
body {
 background-color:#333;
 color:#FFF;
 font-family:Comic Sans MS;
 font-size:20px;
 
}
#intestazione{
 width:100%;
 height:100px;
 position:absolute;
 font-family: Comic Sans MS;
 top:0px;
 left:0px;
 text-align: center;
}
#divhr {
    
position:absolute;
top: 120px;    
font-family:Comic Sans MS;

}
#messaggio {
 position: absolute;
 top: 280px;
 
  }  
</style>

    </head>
    <body>
        
        <div id = "intestazione">
            <h1>Gestione iscrizione prova</h1>
            <hr>
            </div>
            
        <div id = "divhr">    

            <form method="POST" action="<?php $_SERVER['PHP_SELF'] ?>">
            
Cognome: <input type="text" name="cognome"  maxlength="80" size ="82" />

<p> <p>

Nome: <input type="text" name="nome"  maxlength="80" size ="82" />

</p></p>
<p> <p>

Username: <input type="text" name="username"  maxlength="80" size ="82" />

</p></p>
     
            <div align ="center">
            <input type="submit" name="reg" value="Invio Iscrizione" />
            </div>
            
                </div>
        
            </form>
       
        
    <?php
    
     
        require_once("connettimysqli.php");
        require_once("data.php");
     echo "</hr>";
 
     
$id = mysqli_real_escape_string($con, $id);
$nome = mysqli_real_escape_string($con, $nome);
$cognome = mysqli_real_escape_string($con, $cognome);
$username = mysqli_real_escape_string($con, $username);

    echo '<div id ="messaggio">';

if(!empty($_POST)){
    
$query=("INSERT INTO utenti (cognome, nome, username) VALUES('$cognome','$nome','$username')");
$result=mysqli_query($con,$query);

if($result){
    echo("<p> Inserimento avvenuto correttamente <p>");
} else{
 echo("Inserimento non eseguito. Errore: ".mysqli_error($con));
}
}
?>
</div>
    </body>
</html>


Credo che sia tutto corretto ma non capisco il perchè non funziona. Sono giorni che ci lavoro senza concludere niente. Spero in voi. Grazie.
 
ciao
metti un var_dump e dimmi cosa riporta (anche se immagino gia cosa)
PHP:
<?php
//....
if(!empty($_POST)){
var_dump($cognome,$nome,$username);
$query=("INSERT INTO utenti (cognome, nome, username) VALUES('$cognome','$nome','$username')");
$result=mysqli_query($con,$query);
//....
?>
poi non stare a postare tutto il codice, ma solo le parti interessate
comunque come hai detto tu era un casino, ma non è che sia cambiato molto
 
Ciao Borgo ,

Mi sono autorisposto da solo ho confrontato i due codici e manca il $_POST alla fine della stringa delle variabili elencate. Cioè doveva essere in questa maniera qua:

$id = mysqli_real_escape_string($con, $_POST['id']);

L'unica cosa che netbeans mi da triangolino giallo e non so cosa voglia dire però funziona e memorizza. Si può chiudere la discussione.
 
Ultima modifica:

Discussioni simili