Non Résolu

Formulaire d'inscription bug

Bonjour,

Je me tourne vers vous car j'ai problème sur mon formulaire d'inscription.

Lorsque je remplis le formulaire et que je me trompe cela garde bien l'information nom, pseudo, email.

Mais quand je quitte la page inscription.php sans avoir retaper le formulaire en corrigeant les erreurs cela ne marche pas puis quand je retourne sur la page inscription, les informations sont toujours là.


Images :

https://goopics.net/a/Sd3T90k6

1) Je suis le formulaire

2) Je me trompe

3) Je vais à la page d'accueil

4) Je retourne à la page inscription et mes info sont toujours là


functions.php

<?php

if (!function_exists('e')) {
	function e($string) {
		if ($string) {
			return strip_tags($string);


					}
		
				}
			}	




if (!function_exists('not_empty')) {
	function not_empty($fields = []) {
		if (count($fields) != 0) {
			foreach ($fields as $field) {
				if (empty($_POST[$field]) || trim($_POST[$field]) == ""){
					return false;
				}
			}


			return true;
		}
	}
}


if (!function_exists('is_already_in_use')) {
	function is_already_in_use($field, $value, $table){
			global $db;




			$q = $db->prepare("SELECT id FROM $table WHERE $field = ?");
			$q->execute([$value]);




			$count = $q->rowCount();


			$q->closeCursor();


			return $count;
}
}


if (!function_exists('set_flash')) {
	function set_flash($message, $type = 'info'){
			$_SESSION['notification']['message'] = $message;
			$_SESSION['notification']['type'] = $type;
	}
}


if (!function_exists('redirect')) {
	function redirect($page) {
		header('Location: ' . $page);
		exit();
	}
}


if (!function_exists('save_input_data')) {
	function save_input_data() {
		foreach ($_POST as $key => $value) {
			if (strpos($key, 'password') === false) {
				$_SESSION['input'][$key] = $value;
		}
			
		}
	}
}




if (!function_exists('get_input')) {
	function get_input($key) {
		return !empty($_SESSION['input'][$key])
			? e($_SESSION['input'][$key])
			: null;


	}
}


if (!function_exists('clear_input_data')) {
	function clear_input_data() {
		if(isset($_SESSION['input'])) {
			$_SESSION['input'] = [];	


			}
	}
}


register.view.php

<?php $title = 'Inscription'; ?>
<?php include('partials/_header.php');?>
<br>
<br>
<br>
<br>
<br>
<!-- Begin page content -->
<div class="main-content">
  <div class="container">
<center>    <H1 class='lead' id="str">Devenez des à présent membre!</H1>
  <?php  include ('partials/_errors.php');   ?>
    <br>
<br>
<br>
<form class="well col-md-6-col-md-offset-3" method="POST" id="formi" autocomplete="off">
  <fieldset>
  <div class="form-group">
      <label for="name" class="col-lg-2 control-label" style="position: absolute;left: 5px">Nom:</label>
      <div class="col-lg-10">
        <input type="text" value="<?= get_input('name')?>" class="form-control" id="name" name="name" required="required">
      </div>
</div>
<br>
<br>
    <div class="form-group">
    <br>
    <label for="pseudo" class="col-lg-2 control-label" >Pseudo:</label>
    <br>
    <br>
    <div class="col-lg-10">
        <input type="text" class="form-control" id="pseudo" name="pseudo" value="<?= get_input('pseudo')?>" required="required">
    </div>
  </div>  
  <br>
    <div class="form-group">
      <label for="email" class="col-lg-2 control-label" id="lbe">Adresse Email:</label>
      <br>
      <div class="col-lg-10">
        <input type="email" class="form-control" id="email" name="email" value="<?= get_input('email')?>" required="required">
      </div>
    </div>
<br>
<br>
    <div class="form-group">
      <label for="password" class="col-lg-2 control-label" id="mdp">Mot de passe:</label>
      <br>
      <div class="col-lg-10">
        <br>
        <input type="password" class="form-control" id="password" name="password" required="required">
        <br>
          <input type="submit" class="btn btn-primary" value="Inscription" name="register" id="submit">


    </div>
  </div>
  <br>
  <br>
  <div class="form-group">
      <label for="password_confirm" class="col-lg-2 control-label" id="pc">Confirmez votre mot de passe:</label>
      <br>
      <br>
      <div class="col-lg-10">
        <input type="password" class="form-control" id="password_confirm" name="password_confirm" required="required">
      </div>
    </div>
</form>
  </div>
</div>
<?php include('partials/_footer.php');?>


register.php

<?php 
session_start();
require ('config/database.php');
require ('includes/functions.php');
require ('includes/constants.php');




//SI FORMULAIRE A ETAIT SOUMIS
if (isset($_POST['register']))




//CHAMPS REMPLI
if(not_empty(['name', 'pseudo', 'email' , 'password', 'password_confirm'])) {




//TABLEAU ERREURS
	$errors = [];


	extract($_POST);


	if(mb_strlen($pseudo) < 3) {


		$errors[] = 'Pseudo trop court ! (Minimun 3 caractères)';	


	}


	if (! filter_var($email, FILTER_VALIDATE_EMAIL)) {
		
		$errors[] = 'Adresse email invalide !';
	}


	
	if(mb_strlen($password) < 6) {


		$errors[] = 'Mot de passe trop court ! (Minimun 6 caractères)';	
	
	} else {


		if ($password != $password_confirm) {
			
			$errors[] = "Les deux mots de passe ne sont pas identiques !";	
		}


	}




	if (is_already_in_use('pseudo', $pseudo, 'users')) {
			
			$errors[] = 'Pseudo déjà utilisé';
	}


	if (is_already_in_use('email', $email, 'users')) {
			
			$errors[] = 'Adresse E-mail déjà utilisée';
	}	


	if (count($errors) == 0) {
		// envoie d'un mail d'activation 


		$to = $email;
		$subject = 'Friend Social Network - ACTIVATION DE COMPTE';
		$token = sha1($pseudo.$email.$password);


		ob_start();
		require ('templates/activation.tmpl.php');
		$content = ob_get_clean();




		$headers = 'MIME-Version: 1.0'."\r\n";
		$headers .= 'Content-type :text/html; charset=iso-8859-1'. "\r\n";


		mail($to, $subject, $content,$headers);


		// informer l'utilisateur pour qu'il regarde sa boite mail


	set_flash("Mail d'activation envoyé!", 'success');




	} else {
		$errors[] = "Veuillez remplir tout les champs !";	
		save_input_data();


		}


}
else {
	clear_input_data();


}
?>

<?php require ('views/register.view.php');?>


index.php

<?php
session_start();
require 'views/index.view.php';
?>


index.view.php

<?php $title = 'Accueil'; ?>
<?php include('partials/_header.php');?>
<br>
<br>
<br>
<br>
<br>
<br>
<!-- Begin page content --> 
<div class="container">
<div class="main-content">
<div class="rect" style="
  padding: 20rem 72rem;
  top: 160px;
  background-color: #e9ecef;
  position: absolute;left: 80px;"></div>
      <strong id="sto">Friend Social Network</strong><br>
        <p class="presentation"><strong>Friend Social Networt</strong> est un réseau social fun ✉<br>C'est un réseau entre potes. 👨🏼‍🤝‍👨🏼<br>
        Ceci est juste pour le fun ce n'est pas un projet sérieux 🤣<br>
        Alors n'hésitez plus et <a href="register.php" style="text-decoration: none;color: blue">rejoignez dès maintenant la communanté</a> 😀</p><br>
<button type="button" class="btn btn-primary" style="position: absolute; top:480px;margin-left: -4%"><a href="register.php" style="color: white;font-size: 15px;text-decoration: none;">Créer un compte</button></a>
      </div>
  </div>
</div>
<?php include('partials/_footer.php');?>


Merci à vous

495 vues
26 mars 2021 à 13:15 (Édité)
Cette pub permet au site de vivre ...

3 commentaires

Faut que je fasse comment pour la vider ?

Salut @lvr46,


Ton problème se trouve dans ta fonction :

if (!function_exists('save_input_data')) {
	function save_input_data() {
		foreach ($_POST as $key => $value) {
			if (strpos($key, 'password') === false) {
				$_SESSION['input'][$key] = $value; // C'EST ICI QU'IL Y A UN PROBLEME
  		    }
		}
	}
}


Tu stockes toutes tes informations dans une variable de SESSION et donc forcement tu vas retrouver ces informations partout et tout le temps si tu ne vides pas cette variable.


Cette pub permet au site de vivre ...