Il serait intéressant d'utiliser des terme générique et pas des 'truc, launcher' ou autre nomination qui n'ont aucun sens en programmation. Le plus simple est d'exposer en français dans quoi vous vous lancez, les obligations, les problèmes que vous rencontrer, puis donner l'ensemble du code problématique.
Dans ton cas, nous comprenons bien que tu dois faire un formulaire d'enregistrement (1ère étape), puis dans la foulé, identifier le client (2ème étape), mais comme tu utilises des termes personnels, on se retrouve vite à plus rien comprendre.
Pour mois, j'exploiterai ce système :
<?php
// -- LIEN BASE DE DONNEES -----------------------------------------------------
$dsn = "mysql:dbname={mydb};host={127.0.0.1};port={3306};" ;
$basededonnees = new PDO( $dsn, 'root', '' );
// -- FONCTIONS UTILISATEUR -----------------------------------------------------
function is_mail( PDO $basededonnee, $mail )
{
$result = false ;
if( filter_var( $mail, FILTER_VALIDATE_EMAIL ) )
{
$sql = "SELECT * FROM auth WHERE mail = ?" ;
$req = $basededonnee-> prepare( $sql );
$req-> execute( array( $mail ) );
$count = $req-> rowCount();
if( $count == 0 ) $result = true ;
}
return $result ;
}
function submit( PDO $basededonnee, $mail, $mdp )
{
$sql = "INSERT INTO auth(mail,mdp) VALUES(?,?)" ;
$req = $basededonnee-> prepare( $sql );
$req-> execute( array( $mail, md5( $mdp ) ) );
return $basededonnee-> lastInsertId();
}
function auth( PDO $basededonnee, $mail, $mdp )
{
$sql = "SELECT * FROM auth WHERE mail = ? AND mdp = ?" ;
$req = $basededonnee-> prepare( $sql );
$req-> execute( array( $mail, $mdp ) );
return $req-> rowCount();
}
// -- TRAITEMENT DU FORMULAIRE -------------------------------------------------
$erreur = array();
if( !empty( $_POST ) and isset( $_POST['mail'], $_POST['mdp1'], $_POST['mdp2'] ) )
{
if( !is_mail( $basededonnees, $_POST['mail'] ) )
{
$erreur['mail'] = true ;
}
if( $_POST['mdp1'] != $_POST['mdp2'] or strlen( $_POST['mdp1'] ) < 8 )
{
$erreur['mdp'] = true ;
}
if( empty( $erreur ) )
{
$auth_id = submit( $basededonnees, $_POST['mail'], $_POST['mdp1'] );
$_SESSION['auth'] = array(
'id' => $auth_id,
'mail' => $_POST['mail'],
'mdp' => md5( $_POST['mdp1'] )
);
// redirection vers la page souhaite quand l'utilisateur est authentifié
header( 'location:index.php' );
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>S'enregistrer</title>
</head>
<body>
<form method="post" action="inscription.php">
<fieldset>
<?php if( isset( $erreur['mail'] ) or isset( $erreur['mdp'] ) ): ?>
<div class="helper">
<span>Votre mail ou mot de passe est invalide.</span>
<?php if( isset( $erreur['mail'] ) and $erreur['mail'] ): ?>
<span>L'email est déjà utilisé ou ne correspond pas au norme.</span>
<?php endif ?>
<?php if( isset( $erreur['mdp'] ) and $erreur['mdp'] ): ?>
<span>Les mots de passe ne sont pas similaire ou ne comportent pas au moins 8 caractères.</span>
<?php endif ?>
</div>
<?php endif ?>
<input type="text" name="mail" placeholder="Mail" /><br />
<input type="password" name="mdp1" placeholder="Mot de passe" /><br />
<input type="password" name="mdp2" placeholder="Vérification mot de passe" /><br />
<input type="submit" value="Envoyer" />
</fieldset>
</form>
</body>
</html>
Les fonctions utilisateurs sont bien sûr à externaliser. L'exploitation de la fonction auth() à l'ouverture de chaque nouvelle page doit être fait pour valider l'authentification pour les pages qui nécessitent un identification qu'on s'entend bien.
exemple :
<?php
// -- LIEN BASE DE DONNEES -----------------------------------------------------
$dsn = "mysql:dbname={mydb};host={127.0.0.1};port={3306};" ;
$basededonnees = new PDO( $dsn, 'root', '' );
// -- AUTHENTIFICATION ---------------------------------------------------------
if( !auth( $basededonnees, $_SESSION['auth']['mail'], $_SESSION['auth']['mdp'] ) )
{
// redirection vers la page d'identification
header( 'location:login.php' );
}
// le traitement de la page.
Ciao