Je crée actuellement un site pour des potes et je suis tombé sur un problème ce matin.
Lorsque je fais l'inscription, nickel, ça entre dans la base de donnée etc. Je sais aussi me connecter avec le compte à partir de la page de connexion.
Voici mon code de la page inscription (Assez long, je sais pas si c'est la bonne méthode, mais je la trouve cool :3)
Quand je met le script, c'est bon
Si je met en plus un header location comme ceci :
header("location:$urlsite"); ça ne fonctionne. J'ai beau mettre n'importe quoi... Par contre si je retire le script et que je met : echo "Tu es inscrits"; ça fonctionne mais le header location ne fonctionne jamais.Je ne sais pas d'où viens le problème car mon but est que lorsque je m'inscris, ça me connecte directement!
Voici mon code complet
<?php
ini_set("display_errors",0);error_reporting(0);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<?php include("./includes/head.php"); ?>
<title><?php echo $nomsite; ?> : Inscription</title>
<?php $page = "inscription"; ?>
</head>
<?php
$pseudo = $_POST['pseudo-c'];
$req = $bdd->prepare("SELECT count(*) AS nb_ps FROM utilisateurs WHERE username = '$pseudo'");
$req->execute(array('ip' => $_SERVER["REMOTE_ADDR"]));
$donnees = $req->fetch();
$nb_ps = $donnees['nb_ps'];
$req->closeCursor();
?>
<?php
$mail = $_POST['mail-c'];
$req = $bdd->prepare("SELECT count(*) AS nb_ma FROM utilisateurs WHERE email = '$mail'");
$req->execute(array('ip' => $_SERVER["REMOTE_ADDR"]));
$donnees = $req->fetch();
$nb_ma = $donnees['nb_ma'];
$req->closeCursor();
?>
<body>
<?php
if (isset($_SESSION['id']))
{
header("location:$urlsite");
}
?>
<?php
include("./includes/site/dedicasses.php");
include("./includes/site/header.php");
include("./includes/site/menu.php");
?>
<div class="corp2">
<div class="section5">
<h2>Crée gratuitement ton compte <?php echo $nomsite; ?></h2>
<?php
$mail = $_POST['mail-c'];
$mdp = $_POST['mdp-c'];
$mdp2 = $_POST['mdp-c2'];
$ps = $_POST['pseudo-c'];
$nb_lettre_ps = strlen($_POST['pseudo-c']);
$nb_lettre_mdp = strlen($_POST['mdp-c']);
$email = stripslashes(htmlentities($_POST['mail-c']));
if ((isset($_POST['pseudo-c'])) AND (isset($_POST['mail-c'])) AND (isset($_POST['mdp-c'])) AND (isset($_POST['mdp-c2'])))
{
if ((empty($_POST['pseudo-c'])) OR (empty($_POST['mdp-c'])) OR (empty($_POST['mdp-c2'])) OR (empty($_POST['mail-c'])))
{ ?>
<div class="redac-info10"><center>Un ou plusieurs champs ne sont pas completé(s).</center></div>
<?php }
else
{
if ($nb_ps > "0")
{ ?>
<div class="redac-info10"><center>Pseudo déjà utilisé.</center></div>
<?php }
else
{
if ($nb_lettre_ps > "15")
{ ?>
<div class="redac-info10"><center>Le pseudo est trop long.</center></div>
<?php }
if ($nb_lettre_ps < "3")
{ ?>
<div class="redac-info10"><center>Le pseudo est trop court.</center></div>
<?php }
if (!preg_match('#^\w{1,}$#D', $ps))
{ ?>
<div class="redac-info10"><center>Les pseudos ne peuvent contenir que des lettres et des chiffres.</center></div>
<?php }
}
if ($nb_ma > "0")
{ ?>
<div class="redac-info10"><center>L'adresse email déjà utilisée.</center></div>
<?php }
else
{
if (!preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email)))
{ ?>
<div class="redac-info10"><center>L'adresse email est invalide.</center></div>
<?php }
}
if ($nb_lettre_mdp > "18")
{ ?>
<div class="redac-info10"><center>Le mot de passe est trop long.</center></div>
<?php }
if ($nb_lettre_mdp < "4")
{ ?>
<div class="redac-info10"><center>Le mot de passe est trop court.</center></div>
<?php }
if (strcmp($mdp, $mdp2) != 0)
{ ?>
<div class="redac-info10"><center>Les mots de passe ne correspondent pas.</center></div>
<?php }
}
}
?>
<form action="" method="post">
<div class="ligne1">
<input class="username-c" type="text" placeholder="Nom d'utilisateur" name="pseudo-c"/> <input class="mail-c" type="text" placeholder="Adresse e-mail" name="mail-c"/>
</div><hr/>
<div class="ligne1">
<input class="username-c" type="password" placeholder="Mot de passe" name="mdp-c"/> <input class="mail-c" type="password" placeholder="Confirmation du mot de passe" name="mdp-c2"/>
</div>
<input class="submit-c" type="submit" value="Continuer" />
</form>
<?php
if (strcmp($mdp, $mdp2) == 0)
{
if ($nb_lettre_mdp > "4")
{
if ($nb_lettre_mdp < "25")
{
if (!$nb_ma > "0")
{
if (preg_match('#^\w{1,}$#D', $ps))
{
if (!$nb_lettre_ps < "3")
{
if ($nb_lettre_ps < "18")
{
if (preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email)))
{
if (!(empty($_POST['pseudo-c'])) OR (empty($_POST['mdp-c'])) OR (empty($_POST['mdp-c2'])) OR (empty($_POST['mail-c'])))
{
if ($nb_ps == "0")
{
if (preg_match('#^(([a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+\.?)*[a-z0-9!\#$%&\\\'*+/=?^_`{|}~-]+)@(([a-z0-9-_]+\.?)*[a-z0-9-_]+)\.[a-z]{2,}$#i',str_replace('&','&',$email)))
{
$req = $bdd->prepare('INSERT INTO utilisateurs(email, mdp, username, ip, date_inscription, rang) VALUES(:email, :mdp, :username, :ip, NOW(), :rang)');
$req->execute(array(
'email' => htmlspecialchars($_POST['mail-c']),
'mdp' => htmlspecialchars($_POST['mdp-c']),
'username' => htmlspecialchars($_POST['pseudo-c']),
'ip' => htmlspecialchars($_SERVER["REMOTE_ADDR"]),
'rang' => "1"
));
header("location:$urlsite"); /* C'est CECI qui ne fonctionne pas*/
}
}
}
}
}
}
}
}
}
}
}
?>
</div>
</div>
</body>
</html>
Merci de votre aide!
Cordialement,