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 :

Définition de cookie


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 23
    Points : 19
    Points
    19
    Par défaut Définition de cookie
    Bonjour tout le monde;


    Dernièrement, j'ai créé un mini forum et je voulais y ajouter une action recherche ( afin de faciliter l'accées au forum biensur)

    j'ai créé donc une page rechercher.php
    mais a chaque fois je teste mon script, le navigateur me renvoie l'erreur suivante:

    <br /> <b>Notice</b>: Undefined variable: cooksrch in <b>C:\Program Files\EasyPHP 3.0\www\forum\etape8\index.php</b> on line <b>226</b><br />
    la partie du code concernée dans le fichier "index.php" est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    	<table border=0 cellspacing=0 cellpadding=0><tr>
       <form method="post" action="rechercher.php">
          <td><input name="search"
             value="<?php echo $cooksrch; ?>"></td>
          <td><input type="submit" value="Chercher"></td>
       </form>
    </tr></table>
    eet en ce qui concerne la page "rechercher.php" c'est :

    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
     
    <?php
     
    if(isset($search1)) {
       $duree = 365*24*60*60; // 1 an en secondes !
       $cooksrch = setcookie("cooksrch",$search1,time()+$duree,"/");
       Header("Location: index.php");
    } 
     
    //pour traiter la chaine de rechrche au cas ou on tape plusieurs mots a la suite 
     
     // on lit donc le cookie...
    if(isset($cooksrch)) {
       // on transforme les + en espaces
       $search2 = str_replace("+"," ",$cooksrch);
       // on vire les espaces de début et de fin
       $search2 = trim($search2);
       // on vire les double-espaces
       while(strpos($search2,"  ")) {
          $search2 = str_replace("  "," ",$search2);
       }
    }
     
    // pour supprimer les balises html , unesorte de fonction de nettoyage
     
    Function notag($txt) {
       $pattern = "<[^>]+>";
       $temp=ereg_replace($pattern,"",$txt);
       // Supprime aussi les retours
       $temp=str_replace("\n"," ",$temp);
       // et les espaces doubles
       while(STRPOS($temp,"  ")) {
          $temp = STR_REPLACE("  "," ",$temp);
       }
       return($temp);
    }
     
     
     
     ?>
     
    <?php // S'il y a quelque chose à chercher
    if(isset($search2)) {
       include("_conn.php");
       // Début de la requête
       $SQL = "SELECT * FROM forum";
       $SQL .= " WHERE TEXTE LIKE '%";
       // on remplace les espaces de la chaîne de recherche
       // par un bout de requête
       $espace = "%' AND TEXTE LIKE '%";
       $SQL .= str_replace(" ",$espace,$search2);
       // Fin de la requête
       $SQL .= "%' ORDER BY ID DESC";
       // Lecture des fiches
       $result = mysql_query($SQL) or die(mysql_error());
       // Listing
       while ($val = mysql_fetch_array($result)) { ?>
          <div align=justify>
             <A href="index.php?id=<?php echo $val["ID"]; ?>"
             target="_blank"><?php echo $val["titre"]; ?></A> :
       <?php echo substr(notag($val["message"]),0,200); ?>...
          </div><br>
       <?php }
       // Déconnexion
       mysql_close();
    } ?>

    Merci d'avance pour votre aide ^^

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Fort logiquement si tu définis $cooksrch dans rechercher.php et que tu rediriges vers index.php, tu risques de rencontrer des problèmes.
    Tu peux éventuellement ajouter une condition qui teste si $cooksrch existe...

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="search" value="<?php if isset($cooksrch) echo $cooksrch; ?>">

  3. #3
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    La fonction setcookie renvoie un booléen indiquant si le serveur a réussi à émettre l'entête correspondant. Ce n'est pas le contenu de celui-ci qui est renvoyé. Mais, bon, ça n'a aucune importance puisqu'il y a redirection après.

    Votre erreur réside dans l'utilisation d'un cookie car à moins d'avoir les register_globals activés (fonctionnalité fortement déconseillée et "obsolète"), on ne fait pas référence au cookie par une variable du même nom mais via le tableau superglobal $_COOKIE. Donc vous devriez utiliser $_COOKIE['cooksrch'] au lieu de $cooksrch. Et il faudra sans doute faire un test comme celui montré par Celira afin de s'assurer que le cookie existe bien avant d'en chercher la valeur, cela vous évitera une autre erreur (de type notice également).

    A moins que le code montré ne soit incomplet.

Discussions similaires

  1. [cookie] définition
    Par Longrais dans le forum Web
    Réponses: 9
    Dernier message: 10/02/2006, 10h11
  2. [Sybase] Définition des symboles
    Par SoaB dans le forum Sybase
    Réponses: 5
    Dernier message: 19/03/2003, 23h06
  3. [XMLRAD] Cookies pour login
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 9
    Dernier message: 23/12/2002, 17h47
  4. Définition de "Métalangage"
    Par No dans le forum Langages de programmation
    Réponses: 5
    Dernier message: 19/07/2002, 14h05

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