[PHP] Problème de session() et de header()
Heliard
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
Heliard Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Heliard Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour à vous tous,
Premier problème : Dans le cadre de l'implementation d'un formulaire je souhaite utiliser les propriété de session() afin de retenir les variable rentré par mon utilisateur dans le cas où tout le formulaire n'aurait pas été rempli.
Dans le première partie de mon code je tente d'intégrer les diverses valeurs des variables à session() puis dans la deuxième je m'emploie à mettre ces fameuses variables dans les champs adaptés dans le cas ou il y aurait un oubli de la part de l'utilisateur.
Problème : après des tests grâce à des echo, il n'y a, à priori, rien de stocker dans les variables de sessions...
Deuxième problème, il se situe au niveau de mon header, je sais que l header nécessite des condition spécifique, mais je pensait que dans mon cas ça fonctionnerait. et j'ai droit à l'erreur : Warning: Cannot modify header information - headers already sent ....
Voici mon code :
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body>
<?php
$error = array("",0,0,0,0,0,0,0,0); //création d'un tableau qui situera les erreurs : 0 : pas d'erreurs, 1 : champ vide
$tab1 = array("surname", "name", "adress", "postcode", "city", "country", "email", "phone"); //tableau contenant le nom des variables
$tab2 = array("First name", "Last name", "Adress", "Postcode", "City", "Country", "eMail", "Phone"); //tableau contenant le nom des variables que l'on affichera à l'utilisateur
if(isset($_POST['ok'])) //si on clique sur le bouton submit : alors executer le code
{
for($i=0; $i<count($tab1); $i++) //boucle pour traiter les champs un à un
{
eval('$temp = $_POST["'.$tab1[$i].'"];'); //regle le prob de la variable globale
eval('$session = $_SESSION['.$tab1[$i].'];');
$session=$temp; //insertion dans la session des variables avec leur valeurs
if ($temp == "") //affichage des Champs non remplits
{
$error[$i+1]=1;
$error[0].=($error[0]!="")?', '.$tab2[$i].'':'Error with : '.$tab2[$i].'';
}
}
if($error[0]=="") //Si tout les champs sont remplis alors on va les insérer à la database
{
$connection = mysql_connect("*", "*", "*") or die('Erreur de connexion '.mysql_error());
mysql_select_db ("*", $connection);
$sql = "INSERT INTO user (id_user,surname,name,adress,postcode,city,country,email,phone)
VALUES('','$_POST[surname]','$_POST[name]','$_POST[adress]','$_POST[poscode]','$_POST[city]','$_POST[country]','$_POST[email]','$_POST[phone]')";
$req = mysql_query($sql);
$sql = "SELECT id_user FROM user WHERE name=".$_POST['name'].";"; //ici on récupère l'id_user afin de le transmettre à la page suivante
$req = mysql($sql);
$id = mysql_insert_id();
header('location: success.php?id='.$id); //on demande d'aller à la page suivante
}
}
?>
<form method="post" action="booking.php"> //creation du formulaire
<div id="error" style="color:red;visibility: <?php echo(($error[0]!="")?"visible":"hidden"); ?>">
<?php if($error[0]!="") echo $error[0]; ?>
</div> //ce div sert à caché le texte d'erreur, et de l'afficher qu'au refresh de la page lorsque l'on constate des champs vides
<?php
for($i=0; $i<count($tab1); $i++)
{
echo $tab2[$i];
echo " : ";
$tmp = isset($session)? $session : ''; //opérateur ternaire : si il y a eu une variable enregistré alors on va l'insérer dans $tmp sinon insérer du vide.
echo "<input type =\"text\" name=\"".$tab1[$i]."\" value=\"".$tmp."\"/>"; //affichage de l'imput avec à l'interieur ou rien, ou la variable enregistré dans la session (dépendant le l'opérateur ternaire précédent)
echo ($error[$i+1]==1)? "<font color=red>*</font>":""; //affichage d'un étoile rouge à droite du champ vide.
echo '<br/>';
}
echo "<input type=\"submit\" value=\"Send\" name=\"ok\"/>"; //bouton submit
?>
</form>
</body>
</html>
Merci de votre aide !
Premier problème : Dans le cadre de l'implementation d'un formulaire je souhaite utiliser les propriété de session() afin de retenir les variable rentré par mon utilisateur dans le cas où tout le formulaire n'aurait pas été rempli.
Dans le première partie de mon code je tente d'intégrer les diverses valeurs des variables à session() puis dans la deuxième je m'emploie à mettre ces fameuses variables dans les champs adaptés dans le cas ou il y aurait un oubli de la part de l'utilisateur.
Problème : après des tests grâce à des echo, il n'y a, à priori, rien de stocker dans les variables de sessions...
Deuxième problème, il se situe au niveau de mon header, je sais que l header nécessite des condition spécifique, mais je pensait que dans mon cas ça fonctionnerait. et j'ai droit à l'erreur : Warning: Cannot modify header information - headers already sent ....
Voici mon code :
<?php
session_start();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
</head>
<body>
<?php
$error = array("",0,0,0,0,0,0,0,0); //création d'un tableau qui situera les erreurs : 0 : pas d'erreurs, 1 : champ vide
$tab1 = array("surname", "name", "adress", "postcode", "city", "country", "email", "phone"); //tableau contenant le nom des variables
$tab2 = array("First name", "Last name", "Adress", "Postcode", "City", "Country", "eMail", "Phone"); //tableau contenant le nom des variables que l'on affichera à l'utilisateur
if(isset($_POST['ok'])) //si on clique sur le bouton submit : alors executer le code
{
for($i=0; $i<count($tab1); $i++) //boucle pour traiter les champs un à un
{
eval('$temp = $_POST["'.$tab1[$i].'"];'); //regle le prob de la variable globale
eval('$session = $_SESSION['.$tab1[$i].'];');
$session=$temp; //insertion dans la session des variables avec leur valeurs
if ($temp == "") //affichage des Champs non remplits
{
$error[$i+1]=1;
$error[0].=($error[0]!="")?', '.$tab2[$i].'':'Error with : '.$tab2[$i].'';
}
}
if($error[0]=="") //Si tout les champs sont remplis alors on va les insérer à la database
{
$connection = mysql_connect("*", "*", "*") or die('Erreur de connexion '.mysql_error());
mysql_select_db ("*", $connection);
$sql = "INSERT INTO user (id_user,surname,name,adress,postcode,city,country,email,phone)
VALUES('','$_POST[surname]','$_POST[name]','$_POST[adress]','$_POST[poscode]','$_POST[city]','$_POST[country]','$_POST[email]','$_POST[phone]')";
$req = mysql_query($sql);
$sql = "SELECT id_user FROM user WHERE name=".$_POST['name'].";"; //ici on récupère l'id_user afin de le transmettre à la page suivante
$req = mysql($sql);
$id = mysql_insert_id();
header('location: success.php?id='.$id); //on demande d'aller à la page suivante
}
}
?>
<form method="post" action="booking.php"> //creation du formulaire
<div id="error" style="color:red;visibility: <?php echo(($error[0]!="")?"visible":"hidden"); ?>">
<?php if($error[0]!="") echo $error[0]; ?>
</div> //ce div sert à caché le texte d'erreur, et de l'afficher qu'au refresh de la page lorsque l'on constate des champs vides
<?php
for($i=0; $i<count($tab1); $i++)
{
echo $tab2[$i];
echo " : ";
$tmp = isset($session)? $session : ''; //opérateur ternaire : si il y a eu une variable enregistré alors on va l'insérer dans $tmp sinon insérer du vide.
echo "<input type =\"text\" name=\"".$tab1[$i]."\" value=\"".$tmp."\"/>"; //affichage de l'imput avec à l'interieur ou rien, ou la variable enregistré dans la session (dépendant le l'opérateur ternaire précédent)
echo ($error[$i+1]==1)? "<font color=red>*</font>":""; //affichage d'un étoile rouge à droite du champ vide.
echo '<br/>';
}
echo "<input type=\"submit\" value=\"Send\" name=\"ok\"/>"; //bouton submit
?>
</form>
</body>
</html>
Merci de votre aide !
A voir également:
- [PHP] Problème de session() et de header()
- Easy php - Télécharger - Divers Web & Internet
- Teamviewer code de session expiré ✓ - Forum logiciel systeme
- Session invalide ou obsolète - Forum Consommation & Internet
- Gpt header corruption ✓ - Forum Windows 10
- Expert php pinterest - Télécharger - Langages
Surtout que pour ne pas me faciliter la tache il n'aime pas la requête mysql suivante :
$sql = "SELECT id_user FROM user WHERE name=".$_POST['name'].";";
$req = mysql($sql); //=> Warning: Wrong parameter count for mysql()
$id = mysql_insert_id();
header('location: success.php?id='.$id);