sessions php

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : sessions php

Re: sessions php

par Babounet » 07 sept. 2009, 21:12

Attention à ne pas confondre $_SESSION et $_FILES...

Les variables de sessions sont accessibles de toutes les pages ou session_start() a été renseigné en début de fichier (ou via fichier de conf bien sur).
La variable $_FILES fonctionnes comme $_POST.

Lors de l'envoi d'un formulaire, les données sont stockées dans $_POST et les fichiers dans $_FILES. Ces données ne sont accessibles que dans le fichier qui reçoit ces données du formulaire.

Re: sessions php

par boblenain » 07 sept. 2009, 16:32

Ok merci, je teste ça tout de suite! :D

Re: sessions php

par thehawk » 07 sept. 2009, 16:26

Une erreur que j'ai vu dans l'entete du formulaire, cela devrait avoir au minimum ceci : <form action="cible_envoi.php" method="post" enctype="multipart/form-data">.
Ensuite sur la page de reception met en suivant le session_start() :
var_dump($_FILES);

Bye hawk

Re: sessions php

par boblenain » 07 sept. 2009, 16:06

Ok mais attention, ça va être lourd!

le fichier du formulaire :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="HAPedit 3.1">
<script language="JavaScript" type="text/javascript" src="wyzz.js"></script>
<link href="mainlayout.css" rel="stylesheet" type="text/css">
<link href="recrutement/mainlayout.css" rel="stylesheet" type="text/css">
</head>

<body>
<br>
<div id="container">
	<div id="header"><h1 class="Style2">&nbsp;</h1>
	</div>

  <div id="wrapper">
		<div id="content">
        
            
<form id="form1" name="form1" method="post" action="formail.php">
  <table width="485" border="1">
    <tr>
      <td width="284"><label>
        <span class="Style2">Votre nom :</span><br>
        <br/>
        <input type="text" name="nom" id="nom" />
      </label></td>
    </tr>
    <tr>
      <td><label>
        <span class="Style2">Votre prénom :<br>
        </span><br />
        <input type="text" name="prenom" id="prenom" />
      </label></td>
    </tr>
    <tr>
      <td><label> <span class="Style2">Votre email :</span><br>
      <br />
        <input type="text" name="email" id="email" />
      </label></td>
    </tr>
    <tr>
      <td><label>
        <span class="Style2">Votre téléphone :</span><br>
        <br />
        <input type="text" name="telephone" id="telephone" />
        <br>
      </label></td>
    </tr>
    <tr>
      <td><label>
        <span class="Style2"><br>
              Votre message :</span><br>
        <br />
        <textarea name="message" cols="55" rows="5" id="message"></textarea>
      </label></td>
    </tr>
    
    <tr>
	    <td><label>
        <span class="Style2">Votre CV :</span><br>
        <br/>
        <input type="file" name="nom_du_fichier" id="fileField"/>
        </label>     
        </td>
    </tr>
    
    <tr>
      <td><label>
        <input type="submit" name="envoyer" id="envoyer" value="Valider" />
        <div align="right"></div>
      </label></td>
    </tr>
  </table>
  <p>
    <input name="hiddenreference" type="hidden" id="hiddenField" value="
  			<?php 
  			if(isset($_GET['referenceannonce'])){
			$numeroannonce=$_GET['referenceannonce'];
			}
			echo $numeroannonce;
			?>
  ">
</p>
</form>
</div>
	</div>



</body>
</html>
et celui de la page de reception (qui doit fournir la BD et envoyer un mail ! et oui, tout ça en même temps!)
<?php

session_start();



	$_SESSION['nom'] = $_POST['nom']; 
	$_SESSION['prenom'] = $_POST['prenom']; 
	$_SESSION['email'] =  $_POST['email']; 
	$_SESSION['telephone'] = $_POST['telephone'];
	$_SESSION['message'] = $_POST['message'];
	$_SESSION['nomducv'] = $_FILES['nom_du_fichier']['name'];
	$_SESSION['numeroannonce'] = $_POST['hiddenreference'];

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="generator" content="HAPedit 3.1">
<link href="mainlayout.css" rel="stylesheet" type="text/css">
<link href="recrutement/mainlayout.css" rel="stylesheet" type="text/css">
</head>

<body>
<br>
<div id="container">
	<div id="header"><h1 class="Style2">&nbsp;</h1>
	</div>

	<div id="wrapper">
		<div id="content">
        
		  			<span class="centralizer">
                    
<?php

$nom = $_SESSION['nom']; 
$prenom	 = $_SESSION['prenom'];
$email = $_SESSION['email'];
$telephone = $_SESSION['telephone'];
$message = $_SESSION['message'];
$nomducv = $_SESSION['nomducv'];
$numeroannonce = $_SESSION['numeroannonce'];

echo $nom;
echo $prenom;
echo $email;
echo $telephone;
echo $message;
echo $numeroannonce;





	$db = mysql_connect('localhost', '****', '****');
	mysql_select_db('****',$db);
	
	$req = "INSERT INTO candidatures (nom,prenom,reference,email,message,telephone) VALUES('$nom','$prenom','$numeroannonce','$email','$message','$telephone')";
  	mysql_query($req); 

	mysql_close();
	
	
	$dest_dossier = './lescvs/';
	
	$dest_fichier = basename($_FILES['nom_du_fichier']['name']);
	move_uploaded_file($_FILES['nom_du_fichier']['tmp_name'], $dest_dossier . $dest_fichier);
	
	$identite = $prenom." ".$nom;
	
	$liencv = "http://www.***********.fr/recrutement/lescvs".$nomducv;

     $headers ='From: "*********"<'.$email.'>'."\n";
     $headers .='Content-Type: text/html; charset="iso-8859-1"'."\n";
     $headers .='Content-Transfer-Encoding: 8bit';
	 
	 $contenu = "R&eacute;f&eacute;rence : ".$numeroannonce."<p>Nom : ".$identite."<br>"."T&eacute;l&eacute;phone :".$telephone."<br>CV : <a href =".$liencv.">t&eacute;l&eacute;charger</a></p><br>".$message; 
	 

     if(mail('[email protected]', 'contact recrutement', $contenu, $headers))
	      {
		  header('Location: http://www.*******.fr/recrutement/');

     }
     else
     {
          echo 'Erreur : candidature non transmise.';

	}
	
 session_destroy();

?> 
        </span>
        <p></p>

		</div>
	</div>

</body>
</html>

en espérant que ça vous parle... :priere:


Merci beaucoup! :mrgreen:

Re: sessions php

par thehawk » 07 sept. 2009, 15:53

Non pas du tout , ton erreur doit provenir d'ailleurs ;).

Montre nous le code du formulaire , de la page de reception , et si il y a d'autre page :).

Bye Hawk

Re: sessions php

par boblenain » 07 sept. 2009, 15:34

une question que je me pose donc :

si je fais un formulaire d'upload de fichier dans une page qui précède celle qui contient ma déclaration de session, est que je risque de perdre les les données de uploadées?

( en fait c'est ce que je viens d'essayer et malheureusement mon print_r($_FILES); me retourne un array vide...)


edit :

j'ai vu dans un tuto que
Notez que session_start(); est à placer tout au début de votre page, avant tout code HTML, car la session ne peut être démarrée que si le cache du navigateur est vide.


ça voudrait dire que phpstart vide les infos uploadées???

Re: sessions php

par dunbar » 07 sept. 2009, 14:00

Merci dunbar!
Si j'ai bien compris il faut donc que je répercute mon session_start() sur chaque page où j'appelle une variable de session, c'est ça?
Absolument, sur chaque pages qui utilise les $_SESSION, et avant tout autre code. :wink:

Re: sessions php

par thehawk » 07 sept. 2009, 11:44

Deux solutions s'offre a toi.

1er : Mettre un fichier de configuration avec un session_start(), les accès a ta base de données , la définition de tes constantes , des tableaux de valeur utile pour toutes tes pages.
Ce fichier sera inclut dans chaque page

2eme: Solution , te taper un session_start() à chaque page , mais j'ai un doute si on a 3 pages et que la 1er et la3eme on un session_start() et pas celle du millieu (2) , j'ai un doute sur le comportement.


Enfin sinon pour utiliser les $_SESSION il te faut OBLIGATOIREMENT un session_start() et TOUT début du document (page principale OU page de configuration), sachant que si tu as deux appel dans la même page il y aura tres certainement une erreurs (encore et toujours un doute ... une flemme magistral de vérifier :D).

Bye Hawk

Re: sessions php

par boblenain » 07 sept. 2009, 11:37

Merci dunbar!
Si j'ai bien compris il faut donc que je répercute mon session_start() sur chaque page où j'appelle une variable de session, c'est ça?

Re: sessions php

par dunbar » 07 sept. 2009, 11:15

Salut,

Je ne voie pas le session_start() dans la deuxième page :?:

sessions php

par boblenain » 07 sept. 2009, 08:59

Bonjour,

me voici de retour! (déjà? :evil: )

Cette fois je crois avoir un soucis au niveau des sessions en php :
<?php
session_start();
$_SESSION['name'] = 'john';
echo "Vous avez vu " . $_SESSION['name'] . " dans cette page";
?> 
Sur cette page mon echo me retourne bien 'Vous avez vu john dans cette page'.

En revanche dans la page suivante j'obtiens mon message d'erreur.
<?php 
if(isset($_SESSION['counter']))
      {echo 'La variable "counter" existe et vaut: ' . $_SESSION['counter'];}
else { echo '-- ARg ErroR --';}
?> 

Voyez vous une erreur dans mon code ou bien cela vient-il des paramètres de session fixés par mon hébergeur? (cf fichier joint) Merci d'avance! :mrgreen: