PDO:execute() et $_SESSION

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 : PDO:execute() et $_SESSION

Re: PDO:execute() et $_SESSION

par Kaiofking » 05 nov. 2013, 20:35

Bon, après de multiple essai, il semble que le problème soit le suivant :
il faut exécuter directement la requête préparée :

Code : Tout sélectionner

$req_prepare->execute(array($_GET['id']));
et non l'assigner à une variable comme ça :

Code : Tout sélectionner

$req_execute = $req_prepare->execute(array($_GET['id']));
car cette variable ne contiendra pas l'objet PDO, mais seulement un booléen indiquant si la requête s'est bien exécutée.

Merci de votre rapidité en tout cas !!
A tout bientôt :)

Re: PDO:execute() et $_SESSION

par AB » 05 nov. 2013, 16:25

ça ne marche pas ..
Des idées ?
Merci d'avance :)
Il y a un tuto sur la connexion/inscription dans un espace membre ici Le second message du tuto utilise PDO et les requêtes préparées.
Dans ce tuto PDO est également configuré pour afficher les erreurs, ce qui t'aiderait aussi certainement.

Re: PDO:execute() et $_SESSION

par juliette » 05 nov. 2013, 16:03

Arf, c'est pas toujours facile de répondre..
essaye comme ça:
$pdo = $bdd->prepare('SELECT * FROM think_post WHERE id_post="?"';
$post = $pdo->execute(array($_GET['id']));
$retour->setFetchMode(PDO::FETCH_OBJ);

echo $retour->username;

var_dump($retour);

Re: PDO:execute() et $_SESSION

par Kaiofking » 05 nov. 2013, 15:45

PS : J'ai oublié la parenthèse dans le post précèdent mais le pb ne vient pas de là.
L'erreur qu'il me donne est "Call to a member function fetchAll() on a non-object"

Re: PDO:execute() et $_SESSION

par Kaiofking » 05 nov. 2013, 15:40

Bonjour,

alors en fait j'arrive à faire ce que je veux avec :

Code : Tout sélectionner

$donnes = $bdd->query('SELECT * FROM table WHERE id="'.$_GET["id"].'"')->fetch(); echo $donnees[0];
Ça marche mais j'aimerais faire d'une manière plus sécurisée avec prepare();
Je fais donc :

Code : Tout sélectionner

$pdo = $bdd->prepare('SELECT * FROM think_post WHERE id_post="?"'; $post = $pdo->execute(array($_GET['id'])); $retour = $post->fetchAll(); echo $retour[0];
et là ça ne marche pas ..

Des idées ?
Merci d'avance :)

Re: PDO:execute() et $_SESSION

par juliette » 05 nov. 2013, 03:02

essaye comme ça: $retour = $auteur->fetch();

Re: PDO:execute() et $_SESSION

par AB » 05 nov. 2013, 00:36

Il y a un tuto sur la connexion/inscription dans un espace membre ici Le second message du tuto utilise PDO et les requêtes préparées.

Pour un usage courant les sessions sont suffisamment sécurisées. Il faut se trouver à proximité de l'utilisateur pour pouvoir le pirater (comme disait juliette en volant son id de session) par exemple en utilisant un accès internet depuis un espace public, ou plus généralement si quelqu'un pouvait te pirater ta liaison wifi. Cela demande donc des connaissances et de pouvoir pirater le réseau à proximité de l'utilisateur, ou sinon de pirater le serveur (mais ça c'est la responsabilité des administrateurs serveurs).
Donc pas facile mais faisable sous certaines conditions pour un expert qui t'en voudrais vraiment. Pour des liaisons plus sécurisées par exemple de type bancaire on utilise, en complément des sessions, une connexion sécurisée de type ssl qui crypte le flux des données et établi un pont sécurisé entre le serveur et l'ordinateur distant.

Re: PDO:execute() et $_SESSION

par Kaiofking » 05 nov. 2013, 00:04

Manifestement :
$retour = $auteur->fetchAll(); ne marche pas car $auteur n'est pas un objet :/

Re: PDO:execute() et $_SESSION

par Kaiofking » 04 nov. 2013, 23:55

Merci de la vitesse de réponse :)
Je vais essayer ça, sinon pour la session je vais voir avec cette fonction, je me demandais s'il n'y avait pas de risques "énormes" ^^
Merci et bonne soirée !

Re: PDO:execute() et $_SESSION

par juliette » 04 nov. 2013, 23:25

Salut, essaye comme ça:
$req = $bdd->prepare('SELECT username FROM table WHERE id_user = ?');
$auteur = $req->execute(array($donnees['id_auteur']));
$retour = $auteur->fetchAll();
echo $retour->username;
Sur le net, ya pas mal de méthode pour sécuriser les sessions, quoi qu'il en soit a première vu, le vol de session ne peut se faire que par le vol de l'id de session contenu sur le serveur, la solution serait d'utiliser la fonction session_regenerate_id() a chaque changement de page pour laisser active la session hacker le moin longtemps possible...

je peux pas t'en dire plus pour le moment, je suis sur un espace membre oo donc je découvre comme toi mais plus tard peut être...

PDO:execute() et $_SESSION

par Kaiofking » 04 nov. 2013, 22:55

Bonjour,

Voila je suis débutant en PHP et base de données, j'ai deux questions qui me pose problème:
Premièrement, quelqu'un pourrait-il m'expliquer l'utilité de la fonction PDO execute() (j'ai lu la doc et tout), je m'explique :
imaginons que je lance une requête :
$req = $bdd->prepare('SELECT username FROM table WHERE id_user = ?');
$auteur = $req->execute(array($donnees['id_auteur']));
comment récupérer ce fameux username ?
Je précise que j'arrive avec query() mais préparer les requêtes est plus sécurisé parait-il.

Deuxièmement, lorsque un utilisateur se connecte, une session s'ouvre, puis le long de la navigation, j'utilise son id stocké dans $_SESSION pour l'identifier, mais est-ce sécurisé ? un utilisateur peut-il changer cette variable pour celle d'un autre utilisateur, et ainsi accéder au compte d'une autre personne sans s'identifier ?

Merci d'avance pour les réponses :)
Bonne soirée !