[php] Sessions

Sessions [php] - PHP - Programmation

Marsh Posté le 22-08-2005 à 19:20:36    

Bonjour à tous.
 
Je suis en train de faire un script en php de type caddie électronique.
 
J'utilise donc des variables de sessions pour stocker le panier du client.
 
Sur l'hébergeur free, lorsque je souhaite remplir une session $_SESSION['panier'], rien ne se passse. Pas de message d'erreur, rien...  
 
Le répertoire sessions à bel et bien été crée à la racine du FTP.
 

Code :
  1. <?
  2. session_start();
  3. session_register('panier');
  4. if(isset($_POST['quantite']))
  5. {
  6.    $ref = $_REQUEST['ref'];
  7.    $qte = $_POST['quantite'];
  8.    if(!isset($_SESSION['panier']))
  9.    $_SESSION['panier']->quantite=array();
  10.    $panier = array();
  11.    $panier = $_SESSION['panier'];
  12.    $_SESSION['panier']->quantite[$ref] = $_POST['quantite'];
  13. }
  14. ?>
  15. <html>
  16. <head>
  17. <title></title>
  18. <link rel='stylesheet' type='text/css' href='style.css'>
  19. <script language='JavaScript'>
  20. function verif()
  21. {
  22.    if (document.ajout.quantite.value=='')
  23.    {
  24.       alert('Veuillez saisir une quantité correcte!');
  25.       return false;
  26.    }
  27.    if (isNaN(document.ajout.quantite.value)==true)
  28.    {
  29.       alert('Veuillez saisir une quantité correcte!');
  30.       return false;
  31.    }
  32. }
  33. </script>
  34. </head>
  35. <body>
  36. <center>
  37. <table id='tbl_principal' border='0' width='95%' height='95%'>
  38. <tr>
  39.    <td align='center' colspan='2' height='20px'>
  40.       <img src='../img/home.gif' border='0'> <a href='../index.php'>Accueil</a>
  41.       <img src='../img/dev.gif' border='0'> <a href='creation.php'>Développement</a><b>
  42.       <a href='materiel.php'>Vente de matériel</a>
  43.       <a href='promo.php'>Promotions</a>
  44.       <a href='devis.php'>Devis</a></b>
  45.       <a href='nous.php'>Qui sommes-nous?</a>
  46.       <img src='../img/contact.gif' border='0'> <a href='contact.php'>Contact</a>
  47.       <img src='../img/cart.gif' border='0'> <a href='panier.php'>Votre panier</a>
  48.    </td>
  49. </tr>
  50. <tr>
  51.    <td valign='top'colspan='2' height='1px'>
  52.       <img src='../img/ban_gris_halo.png' border='0'>
  53.    </td>
  54. </tr>
  55. <tr>
  56.    <td valign='top'>
  57.    <?
  58.    if(!isset($_POST['quantite']))
  59.    {
  60.       echo"<table id='tbl_center' align='center' width='100%'>
  61.          <tr>
  62.             <th>
  63.                <b>Référence</b>
  64.             </th>
  65.             <th>
  66.                <b>Désignation</b>
  67.             </th>
  68.             <th>
  69.                <b>Garantie</b>
  70.             </th>
  71.             <th>
  72.                <b>Prix Client HT</b>
  73.             </th>
  74.             <th>
  75.                <b>Prix Client TTC</b>
  76.             </th>
  77.             <th>
  78.                <b>Quantité</b>
  79.             </th>
  80.          </tr>
  81.       ";
  82.       $ref = $_REQUEST['ref'];
  83.       $query = "SELECT * FROM article WHERE REF = '$ref'";
  84.       include ('connect.inc.php');
  85.       if(!mysql_select_db($db, $connect))
  86.       echo "Erreur de connection à la base de donnée!";
  87.       else
  88.       {
  89.          //Création et envoi de la requête
  90.          $result = mysql_query($query);
  91.          if (!$result)
  92.          echo "Pas d\'article dans la base de donnée";
  93.          else
  94.          {
  95.             $cpt =0;
  96.             //Récupération des résultats
  97.             echo "<form name='ajout' method='POST' action='ajout.php?ref=$ref' OnSubmit='return verif()'>";
  98.             while (list($ref, $des, $px, $gar, $com)=mysql_fetch_row($result))
  99.             {
  100.                include ('calcul.inc.php');
  101.              
  102.                $cpt = $cpt+1;   //Compte le nombre de lignes renvoyées
  103.                echo
  104.                "
  105.                <tr>
  106.                   <td>
  107.                      $ref
  108.                   </td>
  109.                   <td>
  110.                      $des
  111.                   </td>
  112.                   <td>
  113.                      $gar
  114.                   </td>
  115.                   <td>
  116.                      $pxht
  117.                   </td>
  118.                   <td>
  119.                      $pxttc
  120.                   </td>
  121.                   <td align='center'>
  122.                   <input type='text' name='quantite' size='4'>
  123.                   </td>
  124.                </tr>
  125.                <tr>
  126.                   <td align='center'colspan='6'>
  127.                      <input type='submit' value='Ajouter'>
  128.                   </td>
  129.                </tr>
  130.                </table></form>
  131.                ";
  132.             }
  133.          }
  134.       }
  135.       //Déconnection de la base de données
  136.       mysql_close();
  137.    }
  138.    else
  139.    if (count($_SESSION['panier']->quantite)!=0)
  140.    {
  141.       echo "Article ajouté avec succes à votre panier!<br>
  142.       <a href='materiel.php'>Ajouter d'autre produits</a><br><br>
  143.       <a href='panier.php'>Voir le panier</a>";
  144.    }
  145.    else
  146.    echo"Echec!";
  147.    ?>
  148.    </td>
  149. </tr>
  150. </table>
  151. </center>
  152. </body>
  153. </html>


 
 
Tout marche à merveille en local avec EasyPHP 1.8!
 
Si vous pensez savoir d'où viens le problème faites moi signe! Merci par avance!

Reply

Marsh Posté le 22-08-2005 à 19:20:36   

Reply

Marsh Posté le 22-08-2005 à 21:12:12    

Ca vient certainement de free, moi quand je vois un serveur sur lequel on ne peut pas régler les chmod comme on veut ca m'inquiète un peu...
 
Enfin bon concernant les sessions avec free j'ais toujours eus des problème, et c'est l'une des raisons pour lesquelles j'ais quitté free.
 
Mais disons qu'en gros pour faire marcher un script utilisant les sessions chez free faut souvent bidouiller, en passant par d'autres methodes/solutions sans être certain que ca marchera ailleurs, et un "script de caddie" chez free, là ca serait vraiment très inquiètant!


Message édité par dwogsi le 22-08-2005 à 21:21:27

---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 22-08-2005 à 21:30:26    

je n'ai jamais eu de probleme sous free avec les Sessions
essaie en supprimant "session_register('panier');" en soit elle ne te sert a rien (possible que je dise une connerie, je ne suis pas expert en php).
 
test avec une page simple sous free pour voir ce que ca donne. Mais c'est tout de meme bizarre ton affaire.
 
Juste un ti rappel avec free.
il faut afficher session_start(); en haut de page systematiquement donc attention si tu include cette page ci dans une autre.


Message édité par Badze le 22-08-2005 à 21:32:17
Reply

Marsh Posté le 22-08-2005 à 21:37:21    

Badze a écrit :

Juste un ti rappel avec free.
il faut afficher session_start(); en haut de page systematiquement donc attention si tu include cette page ci dans une autre.


 
Qu'est ce que tu entends par "haut de page"?
Parce que si tu veux dire qu'il faut le faire avant d'envoyer quoi que ce soit au client, ca n'est pas propre a free.


---------------
-- Debian -- Le système d'exploitation universel | Le gras c'est la vie! | /(bb|[^b]{2})/
Reply

Marsh Posté le 22-08-2005 à 22:15:20    

En virant session_register('panier'); ça marche!

Reply

Marsh Posté le 22-08-2005 à 22:38:44    

dwogsi a écrit :

Qu'est ce que tu entends par "haut de page"?
Parce que si tu veux dire qu'il faut le faire avant d'envoyer quoi que ce soit au client, ca n'est pas propre a free.


 
Ha bon, cela fait longtemps que je n'ai pas utilisé les sessions, je ne m'en rappelais plus.
Bref, la combine a été trouver, c'est le principale.  :D  

Reply

Sujets relatifs:

Leave a Replay

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