Problema pagina di conferma

  • Creatore Discussione Creatore Discussione dawidh
  • Data di inizio Data di inizio

dawidh

Nuovo Utente
8 Ott 2009
1
0
0
Ciao ragazzi, ho creato un form per inserimento dati pero' prima di inserire i dati nel database voglio far visualizzare una pagina di conferma contenente una tabella dei dati immessi nel form.Dopo ho creato due tasti:conferma e indietro. Il mio problema è fare la insert nel database dei dati immessi nel form una volta cliccato il tasto di conferma.
Come posso fare utlizzando solo il codice php???? grazie
 
potrebbe essere così:
  • invii i dati alla pagina di conferma
  • li passi ad un form che li contiene come campi hidden
  • se submt è uguale a "Conferma" lanci la query
 
Non credo che i campi hidden siano una soluzione molto sicura. Comunque, io userei una sessione contenente un array serializzato per memorizzare i dati degli utenti ed inviarli alla stessa pagina.

Ecco uno script che ho preparato. Lo devi personalizzare secondo le tue esigenze. In realtà sarebbe opportuno che tu lo riscrivessi da zero sbirciando il codice, perché se provi a modificarlo impazzisci :evil:

PHP:
<?php
session_start();
?>
<html>
	<head>
		<title>Registrazione</title>
		<style type="text/css">
		body, table { font-family:Verdana; font-size:11px; }
		td { padding:5px; }
		</style>
	</head>
	<body>
		<?php
		if(isset($_POST['submit']) || isset($_POST['confirm']))
		{
			$username = isset($_POST['username']) ? trim($_POST['username']) : '';
			$password = isset($_POST['password']) ? trim($_POST['password']) : '';
			$email = isset($_POST['email']) ? trim($_POST['email']) : '';
			
			if(isset($_POST['confirm']))
			{
				list($username, $password, $email) = unserialize($_SESSION['data']);
				
				$conn = mysql_connect('localhost', 'root', 'passwd') or die(mysql_error());
				mysql_select_db('various') or die(mysql_error());
				
				mysql_query("INSERT INTO users (username,password,email) VALUES ('{$username}','{$password}','{$email}')") or die(mysql_error());
				
				echo '<h1>Registrazione effettuata</h1>';
				echo '<p>La tua registrazione &egrave; stata effettuata correttamente!</p>';
			}
			else
			{
				echo '<h1>Conferma dati</h1>';
				echo '<p>Prima di completare la registrazione sei pregato di confermare i tuoi dati:</p>';
				
				echo "<form name=\"cf\" action=\"{$_SERVER['PHP_SELF']}\" method=\"POST\">";
				echo '<table border="1">';
				
				echo '<tr>';
				echo '<td>Username:</td>';
				echo "<td><b>{$username}</b></td>";
				echo '</tr>';
				
				echo '<tr>';
				echo '<td>Password:</td>';
				echo "<td><b>{$password}</b></td>";
				echo '</tr>';
				
				echo '<tr>';
				echo '<td>E-mail:</td>';
				echo "<td><b>{$email}</b></td>";
				echo '</tr>';
				
				echo '<tr>';
				echo '<td><input type="submit" name="confirm" value="Conferma" /></td>';
				echo '<td><input type="button" name="gb" value="Torna indietro" onclick="javascript:history.go(-1);" /></td>';
				echo '</tr>';
				
				echo '</table>';
				echo '</form>';
				
				$_SESSION['data'] = serialize(array($username, $password, $email));
			}
		}
		else
		{
			echo '<h1>Registrazione</h1>';
			echo '<p>Compila questo modulo per effettuare la registrazione:</p>';
			
			echo "<form name=\"register\" action=\"{$_SERVER['PHP_SELF']}\" method=\"POST\">";
			echo '<table border="1">';
			
			echo '<tr>';
			echo '<td>Username:</td>';
			echo '<td><input type="text" name="username" /></td>';
			echo '</tr>';
			
			echo '<tr>';
			echo '<td>Password:</td>';
			echo '<td><input type="password" name="password" /></td>';
			echo '</tr>';
			
			echo '<tr>';
			echo '<td>E-mail:</td>';
			echo '<td><input type="text" name="email" /></td>';
			echo '</tr>';
			
			echo '<tr>';
			echo '<td><input type="submit" name="submit" value="Registrati" /></td>';
			echo '<td><input type="reset" name="reset" value="Resetta" /></td>';
			echo '</tr>';
			
			echo '</table>';
			echo '</form>';
		}
		?>
	</body>
</html>

Ovviamente è testato e funzionante!
 
Come mai utilizzi due valori per l'invio?
PHP:
if(isset($_POST['submit']) || isset($_POST['confirm']))
 
Il primo riguarda l'invio del form iniziale, il secondo del form di conferma. Ho fatto così perché quando il form iniziale viene inviato $_POST['submit'] è definito, ma ovviamente quando invio quello di conferma no.
 

Discussioni simili