Da un po' di tempo non mi funziona questo script, cioè un po' di tempo = 15-20 minuti, ma non capisco il perchè.. Sembra che la posizione dell' include e del session_start() influenzi tutto lo script, il form non riceve dati..
Codice PHP:
<?php
include('settings.php');
session_start();
$step = $_GET['step'];
if(!is_numeric($step) || !isset($step)) {
header ('Location: ?step=1');
}
switch($step) {
case 1:
echo <<<EOT
Benvenuto nella registrazione di <b>MySimpson</b>. Ricorda di fornire un' indirizzo mail valido affinchè successivamente vi si possano inviare i dati immessi nel form sottostante.<br /><br />
<form action="{$_SERVER['PHP_SELF']}" method="POST">
<div style="float: left; margin-right: 50px;">
Username<br />
<input type="text" name="username" required /><br /><br />
Password<br />
<input type="password" name="password" required /></div><div style="float: left;">
Email<br />
<input type="email" name="email" required /><br /><br />
Conferma Password<br />
<input type="password" name="password_check" required /></div><div style="clear: both;"></div><br />
<input type="submit" name="reg" value="Registrati" /></form><br />
EOT;
$username = addslashes(htmlspecialchars($_POST['username']));
$email = addslashes(htmlspecialchars($_POST['email']));
$password = md5(addslashes(htmlspecialchars($_POST['password'])));
$password_check = md5(addslashes(htmlspecialchars($_POST['password_check'])));
if(isset($_POST['reg'])) {
if(empty($username) || empty($email) || empty($password) || empty($password_check)) {
echo '<div id="error">Devi riempire tutti i campi</div>';
} elseif($password_check != $password) {
echo '<div id="error">Le password non coincidono</div>';
} else {
mysql_query("INSERT INTO simpson_users (username, password, livello, exp, email, registrazione) VALUES ('$username','$password','1','1','$email',NOW())") or die(mysql_error());
$_SESSION['ok'] = $username;
header ('Location: ?step=2');
}
}
break;
case 2:
if(!isset($_SESSION['ok'])) {
header ('Location: ?step=1');
} else {
echo '<div id="ok">Registrazione effettuata correttamente.<br />Sono stati inviati i dati al tuo indirizzo email in caso di smarrimento.<br /><br />Se non ricevi nessuna email entro 48 ore assicurati di aver inserito un indirizzo di posta elettronica valido e di aver controllato nella <b>Posta indesiderata</b>.</div>';
}
break;
}
?>
Se provo anche ad esempio ad inserire due password diverse non genera gli "errori" che dovrebbe..
EDIT:
ho risolto.
Ho messo come action, dopo PHP_SELF "?step=1". L' errore stava che il form inviava i dati a registrazione.php, mentre ho messo che se $_GET['step'] è vuoto rimandava a step=1 quindi i dati non venivano mai inviati realmente.