Controlli form per Registrazione utenti

FireinCairo

Nuovo Utente
21 Feb 2013
3
0
0
Salve a tutti,
sto cercando di creare un sistema di registrazione di utenti. Mi sto aiutando con un tutorial presente su Youtube. I primi passaggi sono riusciti ma non riesco a completare i controlli del form. Ecco l'editor:

PHP:
<?
include 'header.php';
?>
<div id="wrapper">
<?php
if (!isset ($_GET ['PASSKEY'] ) ) {
if (!isset ($_POST ['invia'] ) ) { ?>
<form method="post" action="#" id"formregistrazione">
<label for="username">Username</label>
<input type="text" name="username" id="username" /><br>
<label for="password1">Passoword</label>
<input type="password" name="password1" id="password1" /><br>
<label for="password2">Ripeti password</label>
<input type="password" name="password2" id="password2" /><br>
<label for="email">Email</label>
<input type="text" name="email" id="email" /><br>
<input type="submit" name="invia" id="registrati" value="Registrati" />
</form>
<?
} else {
$codiceconferma = md5(uniqid(rand()));
$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);
if($username == "" || $email == "") {
      echo "Devi riempire tutti i campi";
} elseif($password1 == "" || $password2 == "") {
      echo "Devi riempire tutti i campi";
} elseif($password2 != $password1) {
       echo "Le password devono coincidere";
} else {
}
}
</div>
</body>
</html>



Quando vado a verificare su Firefox se tutto è riuscito, mi appaiono tutti i form ma, quando provo a digitare password diverse o uguali, non mi escono le frasi per le diverse condizioni (elseif) come, ad esempio, "Le password devono coincidere", "Devi riempire tutti i campi", ecc....qual'è il problema????
 
Ultima modifica di un moderatore:
ciao
se non hai sbagliato a copiare il codice, manca la chiusura di una } e una di php ?>
poi non usare gli short tag ma sempre il tag completo <?php

p.s.
poi nel post racchiudi sempre il codice tra gli appositi tag /seconda riga formattazione del post ultime tre iconcine, nell'ordine CODE HTML PHP
 
Quali tag mancano?

Grazie per la riposta. Potrei sapere con precisione dov'è che manca la chiusura di una } e di un tag di php ?>. Se possibile, potresti incollarmi proprio le zone in cui c'è il problema? Te ne sarei molto grata.

Grazie


ciao
se non hai sbagliato a copiare il codice, manca la chiusura di una } e una di php ?>
poi non usare gli short tag ma sempre il tag completo <?php

p.s.
poi nel post racchiudi sempre il codice tra gli appositi tag /seconda riga formattazione del post ultime tre iconcine, nell'ordine CODE HTML PHP
 
ciao
intanto la chiusura php prima di </div></body></html> che sono tag html

PHP:
<?php
//....
} elseif($password2 != $password1) {
       echo "Le password devono coincidere";
} else {
}
}
?>
</div>
</body>
</html>

poi per la graffa manca la ciusura dell if
if (!isset ($_GET ['PASSKEY'] ) ) {
penso che sia questa (ma non ho seguito attentamente la logica dello script quindi la chiusura può essere in un altro punto)
piccolo accorgimento: se conti le graffe (aperte e chiuse) devi ottenere un numero pari, contandole (salvo errori) ne ho contate 13, quindi o manca una chiusa o una aperta
 
Modifiche apportate ma nulla di fatto!

Ho provato a fare le modifiche che mi hai detto ma il problema persiste. Ho modificato bene?
Cerco di spiegarti meglio tutto: voglio creare un sistema di registrazione e ho creato, per ora, 4 file di testo (index, config, header, register), secondo le direttive di un tutorial presente su Youtube. Il file di testo in questione è register.php. I file di testo li ho messi tutti nella cartella htdocs di XAMPP. Fino ad ora è riuscito tutto ma non mi si vedono i controlli degli script. Infine, può darsi che i controlli non si vedano perchè non ho installato mysql? Non dovrebbe essere già incluso in XAMPP?

Ps: grazie ancora per la disponibilità, speriamo di risolvere la questione!

PHP:
<?php 

include 'header.php';


?>
<div id="wrapper">
<?php

if (!isset ($_GET ['PASSKEY'] ) ) {

}

if (!isset ($_POST ['invia'] ) ) {
} 

?>


<form method="post" action="#" id"formregistrazione">
<label for="username">Username</label>
<input type="text" name="username" id="username" /><br>
<label for="password1">Passoword</label>
<input type="password" name="password1" id="password1" /><br>
<label for="password2">Ripeti password</label>
<input type="password" name="password2" id="password2" /><br>
<label for="email">Email</label>
<input type="text" name="email" id="email" /><br>
<input type="submit" name="invia" id="registrati" value="Registrati" />


</form>

<?


} else {

$codiceconferma = md5(uniqid(rand()));



$username = mysql_real_escape_string($_POST['username']);
$password1 = mysql_real_escape_string($_POST['password1']);
$password2 = mysql_real_escape_string($_POST['password2']);
$email = mysql_real_escape_string($_POST['email']);


if($username == "" || $email == "") {
      echo "Devi riempire tutti i campi";
} elseif($password1 == "" || $password2 == "") {
      echo "Devi riempire tutti i campi";
} elseif($password2 != $password1) {
       echo "Le password devono coincidere";
} else {



}



</div>
</body>
</html>

ciao
intanto la chiusura php prima di </div></body></html> che sono tag html

PHP:
<?php
//....
} elseif($password2 != $password1) {
       echo "Le password devono coincidere";
} else {
}
}
?>
</div>
</body>
</html>

poi per la graffa manca la ciusura dell if
if (!isset ($_GET ['PASSKEY'] ) ) {
penso che sia questa (ma non ho seguito attentamente la logica dello script quindi la chiusura può essere in un altro punto)
piccolo accorgimento: se conti le graffe (aperte e chiuse) devi ottenere un numero pari, contandole (salvo errori) ne ho contate 13, quindi o manca una chiusa o una aperta
 
Ultima modifica di un moderatore:
suggerimento ... php-validation-one-page

ciao Fire,

ho letto solo oggi il messaggio e mi sono iscritto per un suggerimento,
ho iniziato ad usare php e html solo da un paio di settimane, ho fatto qualche ricerca e l'idea
è arrivata dal sito che ti allego (solo teoria ma molto utile)

http://coredogs.com/lesson/form-and-php-validation-one-page

così ho creato lo script che ti allego, ti sarà facile adattarlo alle tue necessità
è diventato lo "skeleton" per gestire i miei form

io utilizzo ms sql come gestore di database quindi per MySQL devi adattare la funzione "check_userID()"
è pienamente funzionante ma ho eliminato alcuni dati "sensibili"
in ogni caso puoi mascherare la chiamata alla suddetta funzione per provarlo

attenta a non modificare le parentesi graffe e l'apertura/chiusura di php a ridosso del codice HTML
il form è parte integrante di una funzione PHP adeguatamente chiamata

quindi come spiegato nel sito che ti ho indicato il "pallino" lo gestisce PHP non HTML o un misto dei due
in questo modo diventa molto semplice gestire la logica

trovi lo script ed il relativo file .css richiamato in HTML

sperando che non mi vengano troncati x la lunghezza

io uso IIS 7.5, MS SQL e php l'ho installato con gli strumenti messi a disposizione da Microsoft, con qualche veloce verifica
quindi non conosco MySQL

ciao
Marino

PHP:
<?php

# http://localhost/test_site/php/Optidea_Login.php

$errormsg = array();
$errorstring = "";

if (!isset($_POST['Submitted'])) {
  $_POST['Submitted'] = 0;
  $_POST['Action'] = "";
  EmptyFields();
}

if ($_POST['Action'] == "Cancella") $_POST['Submitted'] = 0;

if ($_POST['Submitted'] == 1) {

  check_SOLID();

  check_fields();

  if ($_POST['Action'] == "Abbandona") $_POST['Submitted'] = 0;
  else {
    if (count($errormsg) == 0) {
      $OPdbresult = check_userID($OPfirstname, $OPlastname, $OPpassword);
      if (!$OPdbresult) $errormsg[] = "Le credenziali indicate non hanno trovato riscontro";
    }
    if (count($errormsg) > 0) {
      $errorstring = '<p><font color=red>Ci sono errori nella verifica del form</font></p>';
      $errorstring .= '<ul>';
      foreach($errormsg as $error) $errorstring .= "<li>$error</li>";
      $errorstring .= '</ul>';
    }
    else {
      UnsetFields();
      include "Optidea_Menu_0_MainMenu.php";
      exit();
    }
  }
}
else {
  EmptyFields();
}
DisplayForm();



function check_SOLID() {
  global $_POST;

  $allowedFields = array(
    'OPfirstname' => '1',
    'OPlastname' => '1',
    'OPpassword' => '1',
    'Submitted' => '1',
    'Action' => '1',
  );
  $isSolidRequest = array_diff_key($_POST, $allowedFields);
  if (!empty($isSolidRequest)) exit("SOLID ERROR");
}



function check_fields() {
  global $_POST,$OPfirstname,$OPlastname,$OPpassword,$errormsg;

  if ($_POST['OPfirstname'] != "") $_POST['OPfirstname'] = trim(filter_var($_POST['OPfirstname'], FILTER_SANITIZE_STRING));
  if (!$_POST['OPfirstname']) $errormsg[] = "Non hai inserito il tuo nome";
  else {
    $OPfirstname = $_POST['OPfirstname'];
    if (strlen($OPfirstname) < 3) $errormsg[] = "Il nome indicato e' veramente troppo corto (> 2 car)";
    elseif (strlen($OPfirstname) > 15) $errormsg[] = "Il nome indicato e' di lunghezza eccessiva (< 16 car)";
  }

  if ($_POST['OPlastname'] != "") $_POST['OPlastname'] = trim(filter_var($_POST['OPlastname'], FILTER_SANITIZE_STRING));
  if (!$_POST['OPlastname']) $errormsg[] = "Non hai inserito il tuo cognome";
  else {
    $OPlastname = $_POST['OPlastname'];
    if (strlen($OPlastname) < 3) $errormsg[] = "Il cognome indicato e' veramente troppo corto (> 2 car)";
    elseif (strlen($OPlastname) > 15) $errormsg[] = "Il cognome indicato e' di lunghezza eccessiva (< 16 car)";
  }

  if ($_POST['OPpassword'] != "") $_POST['OPpassword'] = trim($_POST['OPpassword']);
  if (!$_POST['OPpassword']) $errormsg[] = "Non hai inserito la tua password";
  else {
    $OPpassword = $_POST['OPpassword'];
    if (strlen($OPpassword) < 7) $errormsg[] = "La password deve essere di almeno 8 caratteri (> 6 car)";
    elseif (strlen($OPpassword) > 15) $errormsg[] = "La password e' di lunghezza eccessiva (< 16 car)";
  }
}



function check_userID() {
  global $OPconn,$OPfirstname,$OPlastname,$OPpassword;

  $OPdbresult = false;

  if (!isset($OPconn)) {
    $serverName = "nome del server sql";
    $connectionInfo = array("Database"=>"nome del database", "UID"=>"nome dell'utente", "PWD"=>"password");
    $OPconn = sqlsrv_connect($serverName, $connectionInfo);
    if (!$OPconn) die(print_r(sqlsrv_errors(), true));
  }
  $query = "SELECT * FROM users ";
  $query .= "WHERE inserisci le clausole di ricerca");

  $params = array();
  $options =  array("Scrollable" => SQLSRV_CURSOR_KEYSET);

  $result = sqlsrv_query($OPconn, $query, $params, $options);
  if (!$result) die(print_r(sqlsrv_errors(), true));

  $row_count = sqlsrv_num_rows($result);
  if ($row_count > 0) $OPdbresult = true;

  sqlsrv_close($OPconn);

  return $OPdbresult;
}



function EmptyFields() {
  global $OPfirstname,$OPlastname,$OPpassword;

  $OPfirstname = "";
  $OPlastname = "";
  $OPpassword = "";
}



function UnsetFields() {
  global $Submitted,$Action,$errormsg,$errorstring,$OPdbresult;

  unset($Submitted);
  unset($Action);
  unset($errormsg);
  unset($errorstring);
  unset($OPdbresult);
}



function DisplayForm() {
  global $_POST,$OPfirstname,$OPlastname,$OPpassword,$errorstring;
?>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta name="description" content=" OPTIDEA - Optimal solution system - Simplex method ">
    <meta name="keywords" content="OPTIDEA, Optimal, Simplex">
    <meta name="copyright" content="Copyright (c) 1987 Marino Gaslini">
    <meta name="author" content="Marino Gaslini">
    <LINK REL="stylesheet" TYPE="text/css" HREF="Optidea_style.css">
    <title>Optidea - Login function</title>
  </head>
  <body>
    <div>
      <center><H2>Welcome to the<BR>Optidea : Optimal Solution System</H2><HR size=1><H3>Login function</H3><br /></center>
      <form action="<?php echo basename ($_SERVER['PHP_SELF'],".php") . ".php"; ?>" method="POST" enctype="multipart/form-data">
        <TABLE ALIGN=center frame="border" border=10 cellspacing=5 cellpadding=0>
 	  <TBODY valign="center">
	    <TR><TD align="Right"><B>Nome</B></TD>
	        <TD align="Left"><input type=TEXT name="OPfirstname" value="<?php echo $OPfirstname; ?>" size=30 maxlenght=15></TD></TR>
	    <TR><TD align="Right"><B>Cognome</B></TD>
	        <TD align="Left"><input type=TEXT name="OPlastname" value="<?php echo $OPlastname; ?>" size=30 maxlenght=15></TD></TR>
	    <TR><TD align="Right"><B>Password</B></TD>
	        <TD align="Left"><input type=PASSWORD name="OPpassword" value="<?php echo $OPpassword; ?>" size=30 maxlenght=15></TD></TR>
	  </TBODY>
        </TABLE>
        <input type='hidden' name='Submitted' value='1'/>
        <BR /><BR /><BR />
        <TABLE ALIGN=center frame="border" border=10 cellspacing=5 cellpadding=0>
	  <TBODY valign="center">
	    <TR><TD><input type="SUBMIT" name="Action" value="Registrati"></TD>
	        <TD><input type="SUBMIT" name="Action" value="Cancella"></TD>
	        <TD><input type="SUBMIT" name="Action" value="Abbandona" onClick="javascript:window.close()"></TD></TR>
	  </TBODY>
        </TABLE>
        <BR /><BR /><BR />
        <HR size=1 width=50%><center><I><?php echo "Copyright Optidea Solution  -  " . date('l, F jS, Y'); ?></I></center><HR size=1 width=50%>
        <BR /><BR /><center><?php echo "<b>$errorstring"; ?></center>
      </form>
    </div>
  </body>
</html> 
<?php
}
?>



HTML {
  HEIGHT:100%;
  }

BODY {
  HEIGHT:100%;
  MARGIN:0;
  PADDING:0;
  BORDER:0;
  COLOR:black;
  BACKGROUND-COLOR:white;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  FONT-SIZE:10pt;
  FONT-WEIGHT:normal
  }

H1 {
  COLOR:black;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

H2 {
  COLOR:teal;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

H3 {
  COLOR:black;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

H4 {
  COLOR:black;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

H5 {
  COLOR:black;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

H6 {
  COLOR:black;
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

TABLE {
  COLOR:black;
  BACKGROUND-COLOR:rgb(255,255,180);
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  }

TD {
  BACKGROUND-COLOR:rgb(255,255,204);
  FONT-FAMILY:verdana, arial, sans-serif, times new roman;
  FONT-SIZE:10pt;
  FONT-WEIGHT:normal
  }

.Header {
  COLOR:yellow;
  BACKGROUND-COLOR:teal;
  FONT-FAMILY:verdana, arial, times new roman;
  FONT-WEIGHT:bold
  }

.formtable {
  BACKGROUND-COLOR:white;
  }

* {  
  padding:0;  
  margin:0;  
  }

#content {  
  width:300px;  
  text-align:left;  
  margin:10px;  
  }  

.formitem {  
  width:100%;  
  padding:6px;  
  font:11px "Lucida Grande",Arial,sans-serif;  
  }  

.box {  
  width:100%;  
  padding:10px 0px 10px 5px;  
  margin-bottom:8px;  
  font-weight:bold;  
  }
 
marino51, vedi la stessa cosa che ho scritto due post sopra: cerca di formattare correttamente il sorgente nei tuoi post, altrimenti le discussioni diventano lunghe e difficili da leggere. Trovi i tag BBCode nella seconda barra di formattazione, ultimi tre bottoni.
 
formattazione

Ciao FireinCairo,

ti invito a formattare correttamente il codice nei tuoi post al fine di migliorare la leggibilità e, se non l'hai già fatto, a leggere il regolamento.

scusa Alessandro,
ho appena inserito il mio primo intervento, il codice in esso contenuto era ben formattato ma dopo l'invio, ha perso la formattazione
pazienza, capiterà ancora di postare alro codice ....
bye
Marino
 

Discussioni simili