Je crée un script d'enregistrement/connexion tout-en-un, qui affiche d'abord le formulaire d'inscription si $ _POST n'est pas défini. Si c'est le cas, mais les champs obligatoires ne sont pas remplis, il redirige vers la page, en redéfinissant $ _POST. Si tous les champs sont remplis, alors si le nom du bouton d'envoi $ _POST ["login"] est défini, le formulaire confirme le login et définit un bloc de texte, qui est une page redirigeant l'utilisateur vers son panier ou retour au magasin. Si le bouton de soumission $ _POST ["register"] est défini, l'utilisateur souhaite s'enregistrer et une requête d'insertion est générée et soumise. Si cette requête ne renvoie aucune ligne affectée, le script vérifie si l'utilisateur est déjà enregistré. Si c'est le cas, connecte-les et leur montre la page de redirection comme pour la connexion normale. Sinon, si le script retourne 1 ligne affectée, alors je suppose que l'insertion a réussi (j'ai le script break si les requêtes échouent).Le formulaire d'inscription/de connexion PHP/MySQL tout-en-un ne fonctionne pas
La connexion fonctionne si vous cliquez sur connexion, et si vous manquez un champ obligatoire, les redirections fonctionnent, mais c'est tout. Je ne peux pas voir le problème et je ne reçois aucune erreur - je reçois juste un écran vide dans le cas des autres circonstances. Il est un gros morceau de code, j'ai peur ...
<?php
if(!$_POST) {
//hasn't seen the registration form
//display registration form
$display_block = "
<form method=\"POST\" action=\"".$_SERVER["PHP_SELF"]."\">
<p>Please fill in the registration field (required fields marked with <span class=\"req\"><</span>)<br />
First name: <input type=\"text\" name=\"f_name\" size=\"25\" maxlength=\"50\" /><span class=\"req\"><</span><br />
Last name: <input type=\"text\" name=\"l_name\" size=\"25\" maxlength=\"50\" /><span class=\"req\"><</span><br />
Address: <input type=\"text\" name=\"address\" size=\"50\" maxlength=\"150\" /><br />
Town: <input type=\"text\" name=\"town\" size=\"50\" maxlength=\"150\" /><br />
City: <input type=\"text\" name=\"city\" size=\"50\" maxlength=\"150\" /><br />
Post Code: <input type=\"text\" name=\"postcode\" size=\"10\" maxlength=\"10\" /><br />
Username: <input type=\"text\" name=\"username\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br />
Confirm username: <input type=\"text\" name=\"usernameConfirm\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br />
Password: <input type=\"password\" name=\"password\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br />
Confirm password: <input type=\"password\" name=\"passwordConfirm\" size=\"25\" maxlength=\"25\" /><span class=\"req\"><</span><br />
<br />
<input type=\"submit\" name=\"register\" value=\"Register\" /><br /><br />
Already a member? <input type=\"submit\" name=\"login\" value=\"Login\" />
</p>";
} else if ((!isset($_POST["username"])) || (!isset($_POST["usernameConfirm"])) || (!isset($_POST["password"])) || (!isset($_POST["passwordConfirm"]))) {
//hasn't filled out all the fields
header("Location: ".$_SERVER["PHP_SELF"]."");
exit;
} else if($_POST["login"]) {
//user is logging in, so connect to server and select database, check they are registered and their details are right
$mysqli = mysqli_connect(hostname,username,pass,dbname);
//create and issue the query
$sql = "SELECT f_name, l_name FROM auth_users WHERE username='".$_POST["username"]."' AND password=PASSWORD('".$_POST["password"]."')";
$sql_res =mysqli_query($mysqli, $sql) or die(mysqli_error($mysqli));
//get the number of rows in the result set; should be 1 if a match
if(mysqli_num_rows($sql_res) == 1) {
//if authorized, get the values of f_name, l_name
while($info = mysqli_fetch_array($sql_res)) {
$f_name = stripslashes($info["f_name"]);
$l_name = stripslashes($info["l_name"]);
}
//set authorization cookie
setcookie("auth", "1", 0, "/", "sinaesthesia.co.uk", 0);
//create display string
$display_block = "<p>".$f_name." ".$l_name." is authorized.</p>
<p>You are now logged in.</p>
<a href=\"basket.php5\">View Basket</a> | <a href=\"home.php5\">Continue Shopping</a>";
} else if($_POST["register"]) {
//connect to db and issue registration query
$mysqli = mysqli_connect(hostname,username,pass,dbname);
$register_sql = "INSERT INTO aromaMaster (username, password, date_registered) VALUES ('".$_POST["username"]."',PASSWORD('".$_POST["password"]."'),now())";
$register_res = mysqli_query($mysqli, $register_sql) or die(mysqli_error($mysqli));
if (mysqli_num_rows($register_res) != 1) {
//registration failed - perhaps duplicate account
$check_sql = "SELECT username, password FROM aromaMaster WHERE username='".$_POST["username"]."' AND password=PASSWORD('".$_POST["password"]."')";
$check_res = mysqli_query($mysqli, $check_sql) or die(mysqli_error($mysqli));
if(mysqli_num_rows($check_res) == 1) {
//already a member
//set cookie
//set authorization cookie
setcookie("auth", "1", 0, "/", "sinaesthesia.co.uk", 0);
$display_block = "
<p>You are already registered.</p>
<a href=\"basket.php5\">View Basket</a> | <a href=\"home.php5\">Continue Shopping</a>";
}
} else {
//success
$display_block = "
<p>You are registered!</p>
<a href=\"basket.php5\">View Basket</a> | <a href=\"home.php5\">Continue Shopping</a>";
}
}
mysqli_close($mysqli);
}
?>
<html>
<head>
<title>Login/Register</title>
</head>
<body>
<?php echo "$display_block"; ?>
</body>
</html>
Pas une réponse à votre question, mais votre code va bénéficier d'essayer de séparer la mise en page HTML du code autant que possible. – koen
C'est pourquoi tant de gens voient PHP comme un langage horrible. – Duroth
Je l'ai depuis complètement fait disparaître et c'est un script séparé entièrement! – user97410