Session....commandes...et moi au milieu perdue dans tout ça

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 : Session....commandes...et moi au milieu perdue dans tout ça

par Ziwa » 11 avr. 2006, 14:36

Merci de vos debut de réponse =)

@Cyrano, merci pour ton tuto, je crois qu'il va m'être très util
@Truc, ouais merci j'avais déja lu ça =), mais c'est justement parce que j'avais pas compris grand chose que je demande


Je rajouterais que je n'ai pas trouvé de "définition/explication" pour $HTTP_GET_VARS
La fonction n'est pas la même qu'on get ou post? c'est l'impression que ça donne en tout cas

par Cyrano » 10 avr. 2006, 23:00

Et si à tout hasard tu n'es pas écoeurée des tutos, j'en ai un spécialement fait pour les paniers en PHP. Tu devrais y trouver de quoi grapiller une idée ou deux qui réduiraient notablement les échanges avec la base de données.

par Truc » 10 avr. 2006, 22:44

Salut,
$majds = mysql_query("DELETE FROM dh_sessions WHERE ($s_date2 > s_date);"); // je comprend pas pourquoi il a fallut créer des tables dans la bdd pour stoker les sessions ? le passer par l'url suffit pas?
Ben disons que ça dépends de ce que tu enregistres avec dans la table. La table peut servir pour enregistrer les personnes connectées puis d'en calculer le total de connectées ou de relever les adresses IP des visiteurs.

Cette requete supprime toutes les données dont la date est plus ancienne à 1h.

Pour $_SERVER la doc en parlera mieux que moi, getenv() de même
:wink:

Session....commandes...et moi au milieu perdue dans tout ça

par Ziwa » 10 avr. 2006, 15:57

Ma requête est simple... AU SECOURS =)


Je voudrais comprendre avant d'envisager de reprendre le code de la version précédente pour les commandes en lignes de produits... sauf que même en mangeant des tutos y'a toujours des trucs qui m'échappent (à vrai dire c'est la toute première fois que j'utilise réellement des session et un système de panier pour les commandes pour créer un site, donc à vrai dire je suis un peu perdue)
Je vous met deja ce dont je n'ai trouvé aucune explication HTTP_X_FORWARDED_FOR
HTTP_CLIENT_IP


Alors voila un debut de code, j'ai mis en commentaire ce que je pense avoir compris, j'aimerais que vous me disiez si c'est correcte et que vous complétiez surtout =)
<?PHP

session_start(); //demarre la session ça c'est too easy =)

$sid2 = session_id(); // c'est comme le session_name, c'est si la personne n'accepte pas les cookies pour faire passer de toute manière la session par l'url

$base = mysql_connect ("localhost","pif","paf"); 

mysql_select_db("pouf",$base);



//1 heure par session max sinon suppression des sessions, en plus du fait qu'elle se ferme qd on ferme le naviguateur
$s_date2 = mktime() - 3600;

$majds = mysql_query("DELETE FROM dh_sessions WHERE ($s_date2 > s_date);"); // je comprend pas pourquoi il a fallut créer des tables dans la bdd pour stoker les sessions ? le passer par l'url suffit pas?





function get_ip() {

if($_SERVER) { //SERVER? Var super global oui mais encore? Elle sert à stocker entetes ... utilité?



     $ip = $_SERVER['REMOTE_ADDR']; // L'adresse IP du client qui demande la page courante

}

else {
//getenv() retourne la valeur de la variable d'environnement varname, ou FALSE en cas d'erreur.
   if(getenv('HTTP_X_FORWARDED_FOR')) //PROUT :)

     $ip = getenv('HTTP_X_FORWARDED_FOR');

   elseif(getenv('HTTP_CLIENT_IP'))

     $ip = getenv('HTTP_CLIENT_IP');

   else

     $ip = getenv('REMOTE_ADDR'); // L'adresse IP du client qui demande la page courante

}



return $ip;

}

// on va peut être pas poussé mémé dans les hortis, si vous m'expliquez ce que veux dire ce que je comprend pas en haut, je pense m'en sortir avec ce qu'il y a en dessous :)

$c_ip = get_ip();

$tdate = mktime();

$iuse = mysql_query ("SELECT * FROM dh_sessions WHERE s_id = '$sid2';");

$c_user = mysql_fetch_array($iuse, MYSQL_ASSOC);

if ($c_user[s_user]){

  if ($c_ip === $c_user[s_ip]){

     $uuser = mysql_query ("SELECT * FROM dh_users WHERE id = '$c_user[s_user]';");

     $sid = mysql_fetch_array($uuser, MYSQL_ASSOC);

     $upd = mysql_query ("UPDATE `dh_sessions` SET `s_date` = '$tdate' WHERE s_id = '$sid2';");

     $status = "connect";

     }else{

     $status = "noconnect";

  }

}else{

  $status = "noconnect";

}

?>

Voili voilou, si ça ne vous embète pas de répondre à d'autres intérrogations sur cette partie de commande, je collerais une autre partie de code sur lequel j'ai quelques soucis de compréhension.


Je vous remerci déja d'avoir pris le temps de lire mon bout de code