IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

dois-je utiliser les session et comment n'en détruite qu'une?


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut dois-je utiliser les session et comment n'en détruite qu'une?
    bonjour

    voila,
    j'ai une page "page.php" contenant un formulaire dans lequel on peut
    en cochant des checkbox supprimer des elements contenu dans ma bdd

    le traitement de ce formulaire se faire via ma page "traitement.php"
    qui redirige a la fin directement vers ma page "page.php"
    grâce à header('location: page.php') placé entête et un exit en fin de page

    seulement voila je voudrais, quand l'action a bien été faite que ca m'affiche dans ma page "page.php" la phrase "les éléments ont bien étés supprimés"

    donc je dois forcement récupérer une variable venant de "traitement.php"

    d'ou mes 2 questions :

    1) je pense que la création d'une variable session dans "traitement.php" s’impose ???
    "car les variables autres que sessions doivent forcement etre transmisse par un btn <a> ou <input> donc cliquées, chose pas possible vu ma redirction automatique"

    2) attention un exit en fin de page "traitement.php" va detuire ma session qui vient juste d'etre créée donc comment faire?

    3) ma session, apres avoir ete récupérée dans page.php doit etre détruite, je pense? mais elle seule (pas les autres qui me serviront encore)
    mais avec quoi sachant que "session_unregister" est dite sur php.net : "Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser."

    merci

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Je te donne une façon dont je procède, qui par ailleurs est quasi le même que d'autres Soft (genre CMS, blog), donc assez courante.

    J'effectue tout dans la même page, soit page.php (je ne redirige pas vers traitement.php).

    Le plus gros inconvénient n'est pas lorsque tout se passe bien, c'est surtout lorsqu'on détectera une ou plusieurs erreurs.
    Dans ton cas, vu que les traitements se font sur une autre page que celle qui contenait le formulaire, c'est qu'il va falloir renvoyer toutes les données pour pré-remplir le formulaire afin d'éviter que l'utilisateur re-saisisse à nouveau ce qu'il avait fait avant.

    Est ce que tu vois l'inconvénient ?


    Le fait de faire pointer le formulaire sur la même page (page.php), fera que, lors de la validation, et s'il y a une erreur, les données sont toujours là dans le $_POST, on a donc tout ce qu'il faut pour exploiter ces données là pour les remettre dans le formulaire, et même lui indiquer que tel champ comporte telle erreur.

    Ce n'est que lorsque tous les traitements se sont bien déroulés où on peu faire une redirection (un header) vers une page différente.
    Mais comme tu souhaite rester sur cette même page, alors il n'y rien d'autre de particulier à faire.
    Tu sais à l'avance que tout c'est bien déroulé, suffit de stocker ce message dans une variable par exemple, par la suite une alternative suffit pour afficher ce message.


    Une session ne s'impose pas quand même à mon sens.
    Si tu pointes quand même vers traitement.php, puis après ça tu fais une redirection vers page.php, tu peux rajouter un paramètre dans le header, comme un statut, un état, ...
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('location: page.php?statut=ok')
    Suffit de vérifier l'existence de cet élément "statut" dans $_GET et dans page.php, si la valeur vaut Ok, alors on affiche le message.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    merci je vais en tenir compte

    mais comment tu as peut etre une solution a ce pb avec ta technique ?

    merci

  4. #4
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    mais comment tu as peut etre une solution a ce pb avec ta technique ?
    J'avais volontairement omis cet aspect histoire d'éviter l'embrouille.

    C'est très simple, suffit de rediriger vers la même page, soit page.php, et avec le paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header('HTTP/1.1 303 See Other');
    header('Location: page.php?statut=ok');
    exit();
    Et comme je l'avais expliqué, cette redirection ne se fera que lorsque tout est correcte, et uniquement.
    Grosso modo, on repart à 0 pour cette même page, ce qui aura pour effet de ne plus avoir de $_POST entre autre. Le tuto explique ça d'ailleurs.


    Tant qu'il y a erreur, on reste dans la même page sans rechargement (qui sous-entend qu'aucune mise à jour de Bdd ou autre ait été fait).
    Dans ce cas là il est vrai qu'on obtiendra le message venant du navigateur, mais ce n'est pas gênant du fait qu'on aura rien fait (pas de risque d'insertion en double ou double commande comme cela est expliqué dans le tuto).
    On conserve les données de $_POST, ce qui facilite les choses par la suite.

    Cependant, je n'est pas tout lu ce tuto (franchement la flemme, pas envie ), je remarques seulement que leur solution est proche de celle que j'évoque, du coup je ne vois pas pourquoi ils s'embêtent à utiliser les sessions.

    Il n'y a pas besoin de session normal, un simple paramètre suffit.


    Il faut aussi faire en sorte de bien séparer la partie traitement (à faire en 1er) et HTML (après).
    Un header() n'apprécie pas une sortie HTML effectué avant.
    Ca aussi c'est expliqué.


    A toi de voir maintenant.

  5. #5
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    La solution de RunCodePhp est pas mal, mais l'inconvénient c'est que tu va devoir envoyer des paramètres en get, juste pour un retour d'info, et une personne qui fera F5 50 fois aura 50 fois le message de confirmation.
    Tu avais parlé de session dans ton premier post, et j'utilise ça de temps en temps, le gros avantage c'est que l'internaute ne voit aucun changement dans son url. Donc pour répondre à ta question
    3) ma session, apres avoir ete récupérée dans page.php doit etre détruite, je pense? mais elle seule (pas les autres qui me serviront encore)
    mais avec quoi sachant que "session_unregister" est dite sur php.net : "Cette fonction est OBSOLETE depuis PHP 5.3.0. Nous vous encourageons vivement à ne plus l'utiliser."
    Tu peux supprimer une session unitairement en faisant unset($_SESSION['ta_session']), ca va donc supprimer ta session, et non les autres, contrairement à un session_destroy().

    Donc en gros si tu veux passer par des sessions, initialise ta session au retour de ton traitement, puis dans ta page fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if(!empty($_SESSION['ta_session'])) unset($_SESSION['ta_session']);
    Comme ça t'aura le retour une seule fois, une personne qui fait F5 n'aura pas de nouveau le message de confirmation de son traitement.

    En espérant t'avoir aidé

  6. #6
    Membre éprouvé
    Avatar de Gecko
    Homme Profil pro
    Développeur décisionnel
    Inscrit en
    Décembre 2008
    Messages
    499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur décisionnel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 499
    Points : 1 277
    Points
    1 277
    Par défaut
    Ce serai plutôt comme ça:

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    if(isset($_SESSION['ma_session'])) { unset($_SESSION['ma_session']); }

    Et si tu dois passer plusieurs informations via ta session et que l'ensemble doit être détruit met tes variables dans un tableau.

    Voici un petit exemple:
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // On créé la session
    $_SESSION['form_identification'] = array('login' => 'toto', 'pass' => 'tropdur', 'mail' => 'monemail');

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // On affiche le login contenu dans form_identification
    echo $_SESSION['form_identification']['login']; // Affichera toto

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    // On détruit la session form_identification
    if(isset($_SESSION['form_identification'])) { unset($_SESSION['form_identification']); }

    J'espère que ça t'aideras, Toine

  7. #7
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    le !empty() équivaut à un test isset() mais en vérifiant aussi si la variable n'est pas vide, on peut faire les deux donc, à voir après ce qui est le plus approprié à ton traitement

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    voila ou j'en suis dans mon formulaire de contact,
    finalement tout ce passe dans la meme page contact.php
    celle ci est faite sur le model vu precedement.

    Ok je pourrais ajouter des vérifs pour l'adresse mail voir si elle est correcte ou autre
    mais il marche peu pres bien ( il fait bien les vérifs et envois le mail si tout est ok
    mais...
    j'ai tout de meme 3 questions :
    ----------------------------------
    1) j'ai un soucis, quand tout est ok le message à afficher est "Le mail à bien été envoyé"
    mais vu que ma fonction header('Location: ' . $fichierActuel);
    efface les varibles $_post
    donc il affiche le message avant que formulaire ne soit posté c.a.d "rien"
    comment eviter ce pb?

    2) mais question sécurisation du code et des variables
    qu'en pensez vous???

    3)pour mettre en forme le message qui est envoyer dans le mail ($msg)
    j'ai des petit soucis car j'aimerai mettre par exemple certain mots engras,
    comment faire ceci?
    quelle sont ces balises "\n", de quel language sont 'elles issuent
    pour avoir mon texte en gras devrais-je passer ce message en html si oui par quelle astuce?

    merci beaucoup

    voici le code contact.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
     
    <?php
     
    // si $_POST['envoyer'] existe c'est que le formulaire a été envoyer (via le btn envoyer)
    if(isset($_POST['envoyer']))
    {
     
    	// récuperation des variables provenant du formulaire
    	if(isset($_POST['demande'])) //je suis obligé de vérifier si $demande existe car c'est une chekbox (les checkbox et les radio si elles ne sont pas cochées n'exite pas, elle sont pas envoyée)
    	{
    		$demande = $_POST['demande'];
    	}
    	else
    	{
    		$demande = ''; // la variable est vide
    	}
    	$etablisement = $_POST['etablisement'];
    	$nom = $_POST['nom'];
    	$prenom = $_POST['prenom'];
    	$vousEtes = $_POST['vousEtes'];
    	$autre = $_POST['autre'];
    	$adresse = $_POST['adresse'];
    	$ville = $_POST['ville'];
    	$pays = $_POST['pays'];
    	$Cpostal = $_POST['Cpostal'];
    	$mail= $_POST['mail'];
    	$tel = $_POST['tel'];
    	$fax = $_POST['fax'];
    	$commentaire = $_POST['commentaire'];
     
    	//vérifie si les variable ne sont pas vident
    	if(!empty($demande) AND !empty($etablisement) AND !empty($nom) AND !empty($prenom) 
    	AND !empty($vousEtes) AND !empty($adresse) AND !empty($ville) AND !empty($pays)
    	AND !empty($Cpostal) AND !empty($mail) AND !empty($tel) AND !empty($fax) AND !empty($commentaire))
    	{
    		//E-mail auquel sera envoyé le formulaire
    		$destinataire = 'monmail@yahoo.fr';
     
    		//objet du mail envoyé
    		$objet = 'Réception d\'infos ';
     
    		// création du message, les \n permettent de faire un saut de ligne
    		$msg = '
    		-------------------------------\n
    		Demande de : $demande\n 
    		Etablisement : $etablisement\n
    		Nom : $nom\n 
    		Prenom : $prenom\n 
    		Vous êtes : $vousEtes\n 
    		Autre : $autre\n 
    		Adresse : $adresse\n 
    		Pays : $pays\n 
    		Ville : $ville\n 
    		Cpostal : $Cpostal\n 
    		Mail : $mail\n 
    		Tel : $tel\n 
    		Fax : $fax\n 
    		Commentaire : $commentaire\n
    		-------------------------------';
     
    		// On envoi le mail
    		if( mail($destinataire, $objet, $msg, ))
    		{
    			//message d'alerte
    			$alerte = 'Le mail à bien été envoyé';
     
    			// $_SERVER['PHP_SELF'] renvoie le "fichier courant" utilisé (ici contact.php)
    			$fichierActuel = $_SERVER['PHP_SELF'] ;
     
    			// en redirigeant, la fonction header() va vider les variables $_POST et $_FILES pour eviter le renvoi répétitif du formulaire
    			header('Location: ' . $fichierActuel);
    		        exit;
    		}
    		else
    		{
    			//message d'alerte
    			$alerte = 'Une erreur s\'est produite pendant l\'envoi';
    		}
     
    	}
    	else
    	{
    		//message d'alerte
    		$alerte = 'Merci de remplir tout les champs comportant un (*)';
    	}
    }
    else
    {
    	$demande = '';
    	$etablisement = '';
    	$nom = '';
    	$prenom = '';
    	$vousEtes = '';
    	$autre = '';
    	$adresse = '';
    	$ville = '';
    	$pays = '';
    	$Cpostal = '';
    	$mail= '';
    	$tel = '';
    	$fax = '';
    	$commentaire = '';
     
    	//message d'alerte
    	$alerte = 'rien';
    }
     
     
     
    ?>
    <!DOCTYPE html>
    <html lang="fr">
    <head>        
        <title></title>
        <meta charset="utf-8" />
        <meta name="DC.title" content="" />
        <meta name="description" content="La facilité de l'équipement de vos locatifs avec des articles de grande qualité au meilleur prix" />
        <meta name="keywords" content="" />
     
        <meta name="author" content="" />
        <meta name="geo.placename" content="Nantes, Loire Atlantique, France" />
        <link rel="stylesheet" href="css/style.css" />
        <!--[if IE]><link rel="stylesheet" media="screen" type="text/css" title="style" href="css/style-ie.css" /><![endif]-->
     
    	<link rel="icon" type="image/png" href="images/favicon/favicon.png" />
    	<!--[if IE]><link rel="shortcut icon" type="image/x-icon" href="images/favicon/favicon.ico" /><![endif]-->
     
    	<!--pour que les vieux ie créer au préalable ces éléments HTML5 dans leur DOM-->
        <!--[if IE]><script src="js/html5-ie.js"></script><![endif]-->
     
    </head>
     
    <body>
    	<?php
    	//----------------------- CONNEXION A LA BDD ------------------------
    	//include("includes/sql_connect.php");
    	?>
     
    	<div id="page">
     
    		<?php include("includes/header.php");?>
     
    		<div id="content-contact" role="main">
     
     
     
    			<?php echo $alerte;?>
     
    			<section id="formulaire">
    				<form action="contact.php" method="post">
    					<h2>Contactez-nous :</h2>
    					<p>
    						<label for="demande">Demande de* :</label>
    						<input <?php if ($demande == 'catalogue'){echo 'checked="checked"';}?> id="demande" type="checkbox" name="demande" value="catalogue"/>Catalogue
    						<input <?php if ($demande == 'devis'){echo 'checked="checked"';}?> id="demande" type="checkbox" name="demande" value="devis"/>Devis
    						<input <?php if ($demande == 'tarif'){echo 'checked="checked"';}?> id="demande" type="checkbox" name="demande" value="tarif"/>Tarif
    						<input <?php if ($demande == 'renseignement'){echo 'checked="checked"';}?> id="demande" type="checkbox" name="demande" value="renseignement"/>Renseignement
    					</p>
    					<p><label for="etablisement">Etablisement* :</label><input id="etablisement" type="text" name="etablisement" value="<?php echo $etablisement; ?>"/></p>
    					<p><label for="nom">Nom* :</label><input id="nom" type="text" name="nom" value="<?php echo $nom; ?>"/></p>
    					<p><label for="prenom">Prémon* :</label><input id="prenom" type="text" name="prenom" value="<?php echo $prenom; ?>"/></p>
    					<p><label for="vousEtes">Vous Etes* :</label>
    						<select name="vousEtes" id="vousEtes">
    							<option <?php if ($vousEtes == 'camping'){echo 'selected="selected"';}?> value="camping">CAMPING</option>
    							<option <?php if ($vousEtes == 'fabricant'){echo 'selected="selected"';} ?> value ="fabricant">FABRICANT</option>
    							<option <?php if ($vousEtes == 'revendeur'){echo 'selected="selected"';} ?> value="revendeur">REVENDEUR</option>
    							<option <?php if ($vousEtes == 'collectivite'){echo 'selected="selected"';} ?> value="collectivite">COLLECTIVITE</option>
    							<option <?php if ($vousEtes == 'tour operateur'){echo 'selected="selected"';} ?> value="tour operateur">TOUR OPERATEUR</option>
    							<option <?php if ($vousEtes == 'village vacances'){echo 'selected="selected"';} ?> value="village vacances">VILLAGE VACANCES</option>
    							<option <?php if ($vousEtes == 'autre'){echo 'selected="selected"';} ?> value="autre">(Autre)</option>
    						</select>
    					</p>
    					<p><label for="autre">Autre, précisez :</label><input id="autre" type="text" name="autre" value="<?php echo $autre; ?>"/></p>
    					<p><label for="adresse">Adresse* :</label><input id="adresse" type="text" name="adresse" value="<?php echo $adresse; ?>"/></p>
    					<p><label for="ville">Ville* :</label><input id="ville" type="text" name="ville" value="<?php echo $ville; ?>"/></p>
    					<p><label for="pays">Pays* :</label><input id="pays" type="text" name="pays" value="<?php echo $pays; ?>"/></p>
    					<p><label for="Cpostal">Code postal* :</label><input id="Cpostal" type="text" name="Cpostal" value="<?php echo $Cpostal; ?>"/></p>
    					<p><label for="mail">E-mail* :</label><input id="mail" type="text" name="mail" value="<?php echo $mail; ?>"/></p>
    					<p><label for="tel">Tel* :</label><input id="tel" type="text" name="tel" value="<?php echo $tel; ?>"/></p>
    					<p><label for="Fax">Fax* :</label><input id="fax" type="text" name="fax" value="<?php echo $fax; ?>"/></p>
    					<p><label for="commentaire">Commentaire* :</label><textarea id="commentaire" name="commentaire"><?php echo $commentaire; ?></textarea></p>
     
    					<p class="obligatoire">*Champs obligatoires.</p>
     
    					<input class="effacer" name="effacer" type="reset" value="Effacer" />
    					<input class="envoyer" name="envoyer" type="submit" value="Envoyer" />
    				</form>
     
    			</section> <!-- fin slider -->	
     
    		</div> <!-- fin content -->
     
    	</div> <!-- fin page -->
     
    	<?php include("includes/footer.php");?>	
     
      </body>
     
    </body>
    </html>

  9. #9
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    1/ C'est normal, car quand on fait un header('Location : un_page.php') C'est comme si on repartait de 0 pour cette page (une_page.php), dont tout ce qui aura été fait avant n'est pas tenu compte, comme l'initialisation du message dans $alerte;

    Au passage, $_SERVER['PHP_SELF'] n'est pas une donnée fiable.
    La page est connue, c'est contact.php, il est préférable d'indiquer celle ci.

    Après, c'est à toi de voir, mais il faut quelque pour indiquer que tout c'est bien passer.
    De mon coté je t'avais suggéré de passer un paramètre dans l'URL, ce qui me semble suffisant, j'avais fais ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    header('HTTP/1.1 303 See Other');
    header('Location: contact.php?hasSend=send');
    exit();
    Comme on repart de 0, il faudra alors vérifier l'existence de "hasSend" dans $_GET :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?php
    // Si le mail a été envoyé
    if (isset($_GET['hasSend'] && $_GET['hasSend'] == 'send') {
        $alerte = 'Le mail à bien été envoyé';
    }
    ?>
    <!DOCTYPE html>
    ... etc ...
    Ou alors tu exploite les sessions.


    2/ Quand on fait ce genre de programme, il faut au moins distinguer 2 aspects qui n'ont rien avoir, mais qui se complètent bien souvent.
    -> La sécurité et la fiabilité.
    Ni l'un ni l'autre n'est suffisant malheureusement.
    Ce n'est pas de simple !empty() qui vont garantir ces 2 points là.
    Cette étape là peu allègrement faire plusieurs milliers de lignes de codes (c'est dire), tout dépend du degrés qu'on souhaite avoir.

    Il existe des filtres de vérifications qui peuvent aider à réaliser cela.
    Types de filtres
    -> Filtres de validations

    3/ A partir du moment où on veut faire de la mise en forme, c'est le format HTML.
    Il n'y a pas d'astuce, un mail (texte brut ou HTML) c'est un document, et comme tout document il y a des normes, etc ...
    Le plus simple c'est d'utiliser des librairies comme PhpMailer qui facilite les choses.
    Sinon, recherche des tutos, bouquins, etc ...
    T'expliquer ça est beaucoup trop long (puis je viens de le dire, de nombreux tutos existent déjà).

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 187
    Points : 50
    Points
    50
    Par défaut
    merci d'avoir répondu
    aussi vite fait et bien fait

    j'ai cependent encore une ou 2 questions :
    1) a quoi sert cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    header('HTTP/1.1 303 See Other');
    2) pour le formatage de mon mail
    comment s'appelle le langage que j'utilise pour formaté mon message
    pour que je puisse chercher les tutos lui correspendant
    ou tout simplement trouver les regles qui le régisse

    3) en l'état le btn reset marche bien
    mais plus apres avoir validé une premiere fois mon formulaire
    comment ca se fait?

  11. #11
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Pas mal de petits points dans mon précédent post était là pour t'inciter à faire des recherches (moteurs de recherche, doc de Php, etc ...).

    Pour le header, c'était là pour dire que par défaut c'est une entête type 302 qui est renvoyée, ce qui dans la quasi totalité des cas ne convient pas.
    Une entête de type 301 ou 303 est plus juste.
    Ceci peut être pénalisant si on effectue ce type de redirection dans une partie "publique" où on souhaite que la page soit indéxée par un moteur de recherche.

    Ceci est par ailleurs plus lié au serveur Web (Apache) que Php.
    Pour en savoir plus tu peux faire des recherche avec "Apache 302" (301, 303, et pour les plus connus : 404, 500).


    Pour ce qui est des mail, il n'y a pas vraiment de langage, ce sont plus des normes, comme RFC 2822, etc ...
    Là aussi, suffit de consulter la doc de Php. Il y a des explications, des exemples, couplé ça avec google, on arrive à ces fins.
    Je n'ai pas de tutos, j'en avais consultés à l'époque, c'est sûr, mais maintenant ???
    J'exploite depuis PhpMailer comme je l'avais dit, ça permet de se soustraire de ces normes, c'est lui qui se charge de le faire.
    Là aussi, google est ton meilleurs ami.
    Je dirais juste que, faire des mails au format HTML, Ok, mais il ne faut pas perdre de vu que ce mail sera lu par une personne, et là, on n'a aucune garanti que cette personne va le lire correctement, de la façon dont on le souhaite.
    Une personne le lira avec un "client" (Outlook, Thunderbird, directement sur le net donc un navigateur, etc ...).

    Il est donc courant de faire un mail contenant le message à la fois en texte brut, et aussi au format HTML.


    Pour ce qui est du bouton reset, il doit avoir une erreur HTML.
    Cette erreur découle peut être d'une erreur de Php.
    Fait un clic droit dans la page HTML puis "code source de la page" lorsqu'il y a cette erreur, et observe cette partie de code (le formulaire).
    Tu verras peut être d'où vient l'erreur.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    Inscrit en
    Décembre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $nom = $_POST['nom'];
    ...
    echo $nom;
    C'est clair qu'il faut changer ce genre de code, pareil pour tes mails. D'ailleurs je te conseil phpmailer. C'est très simple il te permet de formater ton message soit en text soit en html juste avec une ligne du genre. En plus ça t'évite de faire mumuse avec ton php.ini et tu pourra mieux débugger. Tu verra que ta fonction mail() native de php donne souvent des surprises.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    require("class.phpmailer.php");
    $mail = new PHPMailer();
    $mail->isHTML(true);
    // plusieurs paramètres très souvent les même
    // etc...
    $mail->Send();

Discussions similaires

  1. [C/S] Dois-je utiliser les Sockets ou le Remoting ?
    Par Danny Blue dans le forum Windows Forms
    Réponses: 5
    Dernier message: 29/01/2008, 20h18
  2. [PEAR][Auth] Comment utiliser les sessions ?
    Par zevince dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 27/01/2007, 12h08
  3. Utiliser les sessions de phbBB dans d'autres pages
    Par charliejo dans le forum Langage
    Réponses: 2
    Dernier message: 27/05/2006, 09h55
  4. php:comment utiliser les sessions en php
    Par feten dans le forum Langage
    Réponses: 3
    Dernier message: 19/11/2005, 17h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo