[PHP-COOKIE] Help me - a n'y rien comprendre :(

Help me - a n'y rien comprendre :( [PHP-COOKIE] - PHP - Programmation

Marsh Posté le 16-02-2004 à 18:25:51    

'lut les gens,
 
petit post vite fait avant que je pete un cable, ça va faire 2h que je suis sur ce pb de merde :o
 
Voila comment j'ecrit mes cookies :
 

Code :
  1. <?
  2. if(empty($_POST['Nom']) or empty($_POST['Prenom']) or empty($_POST['CodePostal']) or empty($_POST['Telephone']) or empty($_POST['SoAd']))
  3. {
  4.  setcookie('Nom',$_POST['Nom']);
  5.  setcookie('Prenom',$_POST['Prenom']);
  6.  setcookie('CodePostal',$_POST['CodePostal']);
  7.  setcookie('Telephone',$_POST['Telephone']);
  8.  setcookie('SoAd',$_POST['SoAd']);
  9.  header('Location: /contact.php?erreur=1');
  10. }
  11. else
  12. {
  13.  print('mail ok!'.$retourpp);
  14. }
  15. ?>


 
ça c'est la page de verification du form, et voila la page de form, avec je souhaite retrouver les infos deja tapées dans le form :
 

Code :
  1. <?
  2. function VerifValue($value)
  3. {
  4.  if(isset($_COOKIE[$value]))
  5.   {
  6.    $value = ('value="'.$_COOKIE[$value].'" ');
  7.    echo $value;
  8.   }
  9. }
  10. ?>


 
et j'appel ma fonction de cette maniere : <?php VerifValue("Nom" ); ?>


Message édité par KdZ' le 16-02-2004 à 18:47:57
Reply

Marsh Posté le 16-02-2004 à 18:25:51   

Reply

Marsh Posté le 16-02-2004 à 19:02:38    

il est où le pbm :??:
un message d'erreur? un cookie qui se crée pas? qui se transforme en tortue mutante??

Reply

Marsh Posté le 16-02-2004 à 19:07:32    

Ah autant pour moi, en fait le champs reste vide :(
 
je ne met qu'un valeur dans le champs Nom, envoyer, et rien...
 
Edit : dans mon formulaire de contact, j'ai essayer ça pour voir :
 

Code :
  1. echo $HTTP_COOKIE_VARS["Nom"];
  2. print_r($_COOKIE);


 
et voila ce que j'ai :
 
Notice: Undefined index: Nom in ...contact.php on line 46
Array ( )

 
Voila donc a croire que le cookie ne ce creer pas  [:mir45]


Message édité par KdZ' le 16-02-2004 à 19:09:21
Reply

Marsh Posté le 16-02-2004 à 20:58:04    

:(

Reply

Marsh Posté le 16-02-2004 à 21:01:09    

essaye ca : dans ta fonction tu ajoutes  
global $_COOKIE;


Message édité par Profil supprimé le 16-02-2004 à 21:02:04
Reply

Marsh Posté le 16-02-2004 à 21:17:18    

function VerifValue($value)
 {
  global $_COOKIE;
  if(isset($_COOKIE[$value]))
   {
    $value = ('value="'.$_COOKIE[$value].'" ');
    return $value;
   }
 }
 
 
ça marche toujours pas, franchement là j'y comprend rien :/
Et puis je suis en auto_global (config par default easyphp 1.7 avec magic quote à on)  [:mir45]


Message édité par KdZ' le 16-02-2004 à 22:39:11
Reply

Marsh Posté le 16-02-2004 à 22:38:56    

essaye ca, j'utilise cette fonction :
(a adapter pr toi je pense)
 
function lire_dans_cookie($cle) {
   
  global $_COOKIE;
  if (isset($_COOKIE[$cle])) {
    return urldecode($_COOKIE[$cle]);
  } else {
    return false;  
  }
}

Reply

Marsh Posté le 16-02-2004 à 22:41:34    

Je c'est pas mais, mais ce qui m'enerve c'est que mon code est censé etre correct, et pourtant ça ne marche pas...
 
J'ai evidemment testé sous plusieurs browsers :(
 
Putain c dingue ça :o

Reply

Marsh Posté le 17-02-2004 à 00:53:41    

:hello:

Reply

Marsh Posté le 17-02-2004 à 01:25:03    

Euh, comme on n'a pas le code du formulaire, je vais juste faire une supposition :
 
Tu testes si un des différents $_POST est vide. Si oui, tu te sers des valeurs (alors que l'une au moins est vide) pour la balancer dans un cookie...Y a pas un truc qui te semble louche dans la méthode ? :)
 
(et pourquoi utiliser des cookies, à priori ce serait plutôt le boulot des sessions ça non ?)

Reply

Marsh Posté le 17-02-2004 à 01:25:03   

Reply

Marsh Posté le 17-02-2004 à 01:48:04    

Tu veux du code ? voila :D
page contact (form)

Code :
  1. <?php
  2. if(isset($_GET['erreur']))
  3. {
  4.  $erreur = $_GET['erreur'];
  5. }
  6. if(!empty($erreur))
  7. {
  8.  switch($erreur)
  9.   {
  10.    case 1:
  11.     print('<b>ERREUR : Un ou plusieurs champs obligatoires n\'ont pas été remplies !</b><br /><br />');
  12.    break;
  13.   }
  14. }
  15. function VerifValue($value)
  16. {
  17.  if(isset($_COOKIE[$value]))
  18.   {
  19.    $value = ('value="'.$_COOKIE[$value].'" ');
  20.    echo $value;
  21.   }
  22. }
  23. // print_r($_COOKIE);
  24. ?>
  25. <table>
  26. <form action="/scripts/VerifFormContact.php" name="FormContact" method="post" />
  27. <tr>
  28. <td><b>Nom :</b></td>
  29. <td><input type="text" name="Nom" <?php VerifValue('Nom'); ?>/></td>
  30. </tr>
  31. ...je vous passe le code basic des champs...
  32. <tr>
  33. <td colspan="2"><input type="submit" value="Envoyer" /></td>
  34. </tr>
  35. </form>
  36. </table>


 
et la page de verif :
 

Code :
  1. include('../includes/config_pages.php');
  2. if(empty($_POST['Nom']) or empty($_POST['Prenom']) or empty($_POST['CodePostal']) or empty($_POST['Telephone']) or empty($_POST['SoAd']))
  3. {
  4.  setcookie('Nom',$_POST['Nom']);
  5.  setcookie('Prenom',$_POST['Prenom']);
  6.  setcookie('CodePostal',$_POST['CodePostal']);
  7.  setcookie('Telephone',$_POST['Telephone']);
  8.  setcookie('SoAd',$_POST['SoAd']);
  9.  header('Location: /contact.php?erreur=1');
  10. }
  11. else
  12. {
  13.  print('ok');
  14. }


 
 
Voila, je suis d'accord avec toi la methode est stupide en elle meme, mais bon, si la valeur est vide, le cookie aussi donc pas bien grave, en fait je cherche un moyen pour renvoyer les valeurs dans le form  [:mir45]  
 
S'il te vient l'idée de ma balancer une autre methode (certainemen mieux) j'aimerai comprendre mon erreur ;)
 
Thx ;)


Message édité par KdZ' le 17-02-2004 à 01:50:44
Reply

Marsh Posté le 17-02-2004 à 02:45:31    

KdZ' a écrit :


Voila, je suis d'accord avec toi la methode est stupide en elle meme, mais bon, si la valeur est vide, le cookie aussi donc pas bien grave


 
Sûrement pas, si la valeur est vide, le cookie est supprimé, nuance.
 
Bon, a part ça, j'ai recopié ton code tel quel, chez moi ça fonctionne au poil, donc ce serait plutôt du côté de la config d'easyphp qu'il faudrait chercher la cause...Tu as essayer en mettant les autres arguments facultatifs de setcookie (path et domain entre autres) ?

Reply

Marsh Posté le 17-02-2004 à 10:05:35    

Ca fonctionne chez toi ? :eek:
 
Arf, et si tu essaye de supprimer un cookie qui n'existe pas ça provoque une erreur ? parce que ça peut etre le cas là.
thx ;)

Reply

Marsh Posté le 17-02-2004 à 17:04:14    

Ouais (bon, ok, c'est pas exactement le même code, y a pas le include de la page de vérif :D).
 
Par contre, je l'avais pas vu, mais ta page de vérif se trouve pas dans le même répertoire que le form apparement, y aurait pas un problème avec les path et domain là ? (si qqn se demande pourquoi on utilise les sessions pour ce genre de truc :D)

Reply

Marsh Posté le 17-02-2004 à 23:40:12    

Bon j'ai laisser tomber :D
j'ai fait directement un header() en repassant dans l'url les values des form passé en get, et ensutie dans le form, je recup les données passées en get (si y'en à)
 
ça marche tres bien :)
 
Petite question, si j'ai un gros texte (style textarea) je ne pense pas que cette merthode soit tres optimisée, vu que une url est limitée en caracteres (combien deja ?) alors, par simple curiosité, quelle serait la bonne methode ?

Reply

Marsh Posté le 18-02-2004 à 02:02:22    

KdZ' a écrit :


j'ai fait directement un header() en repassant dans l'url les values des form passé en get, et ensutie dans le form, je recup les données passées en get (si y'en à)


 
Ouais, sauf que s'il y a un mot de passe qui est trasmis en clair  :non:  

KdZ' a écrit :


Petite question, si j'ai un gros texte (style textarea) je ne pense pas que cette merthode soit tres optimisée, vu que une url est limitée en caracteres (combien deja ?) alors, par simple curiosité, quelle serait la bonne methode ?


 
Les sessions, définitevement (elles l'étaient déjà à la base donc bon =))


Message édité par naceroth le 18-02-2004 à 02:02:52
Reply

Marsh Posté le 18-02-2004 à 15:39:08    

Pas de mot de passe...
Mais je vais me renseigner sur les sessions, rapidemment, tu peux m'expliquer l'avantage que j'ai a utiliser les sessions plutot que cette methode ?
 
Je ne repasse donc plus mes variables via le header pour le retour ?

Reply

Marsh Posté le 18-02-2004 à 17:00:39    

On va faire simple :
 
Les cookies sont stockés chez le client, trois gros désavantages :
- modifiable à volonté directement par l'utilisateur
- peut être refusé par l'utilisateur
- si on n'y prend pas garde, peut être toujours présent sur l'ordinateur de ton utilisateur après qu'il ait passé ton formulaire => pas top si il y a des données sensibles genre login/pass...
 
Les sessions fonctionnent grosso modo comme les cookies, sauf qu'elles sont stockées sur le serveur, qu'elles ont une durée de vie beaucoup plus courte (quoique 3h quand même par défaut).
 
Bon, ce n'est pas non plus la perfection ultime en matière de sécurité, mais ça demande déjà plus de connaissances

Reply

Marsh Posté le 18-02-2004 à 18:32:38    

Et c'est quoi la methode de "perfection ultime en matière de sécurité" ? :D

Reply

Marsh Posté le 18-02-2004 à 19:00:27    

ça n'existe pas :D

Reply

Marsh Posté le 18-02-2004 à 19:03:36    

C'est ce que j'attendait comme reponse ;)
 
 
Bon alors on va voir pour les sessions :)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed