Faire des sessions PHP sur un compte gratuit Free

Faire des sessions PHP sur un compte gratuit Free - PHP - Programmation

Marsh Posté le 29-03-2005 à 17:01:53    

Bonjour à tous,
 
N'y a-t-il pas des trucs à savoir pour créer des sessions et les gérer sur un compte free avec du PHP ? Je sais que les variables globales sont à ON (ce qui peut poser de petits problèmes de sécurité certes mais là n'est pas le problème). Je sais qu'il faut créer un répertoire spécial pour les sessions nommé /sessions mais je voudrais obtenir un code "tout cuit" pour parvenir à faire une session ...
 
J'ai recherché sur divers site, mais la méthode semble toujours poser problème : Free semble incapable de stocker correctement les données. Toutefois, je sais que c'est possible (j'ai déjà installé des logiciels comme phpBB sur des comptes Free) mais je n'arrive pas à créer un code pour des sessions "toutes simples" ... z'auriez pas un truc SVP ?
 
Merci d'avance.


Message édité par mahuf le 29-03-2005 à 17:02:13
Reply

Marsh Posté le 29-03-2005 à 17:01:53   

Reply

Marsh Posté le 29-03-2005 à 17:04:36    

créer un rep /sessions/ à la racine


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-03-2005 à 17:06:28    

Ouais, mais ça je l'ai fait (j'ai précisé dans mon message). Et ça n'a pas fonctionné.

Reply

Marsh Posté le 29-03-2005 à 17:08:27    

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['ourson']="winnie";
  4. echo "je suis ".$_SESSION['ourson']. "l'ourson";
  5. ?>


Message édité par simogeo le 29-03-2005 à 17:08:42

---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-03-2005 à 17:12:32    

Y'a pas besoin de faire appel à la db ?
 
Si je veux allouer des logins et des mots de passe, je fais comment ?

Reply

Marsh Posté le 29-03-2005 à 17:13:30    

mahuf a écrit :

Y'a pas besoin de faire appel à la db ?
 
Si je veux allouer des logins et des mots de passe, je fais comment ?


Les sessions n'ont rien à voir avec la db.


Message édité par skeye le 29-03-2005 à 17:13:40

---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2005 à 17:19:14    

Tu crées une DB avec un champ id, login et mot_de_passe et tu compares les données entrées par l'utilisateur et celles de la DB. Ensuite si tout est correct, tu crées une session propre à  l'utilisateur avec session_start(); ...


Message édité par drone le 29-03-2005 à 17:24:00
Reply

Marsh Posté le 29-03-2005 à 17:23:37    

skeye a écrit :

Les sessions n'ont rien à voir avec la db.


enfin ca dépend heinnn.  
les données de sessions peuvent être stockées en db plutôt qu'en fichier texte mais par défaut c'est pas le cas


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-03-2005 à 17:26:27    

simogeo a écrit :

enfin ca dépend heinnn.  
les données de sessions peuvent être stockées en db plutôt qu'en fichier texte mais par défaut c'est pas le cas


Fichtre![:dawa]
Je découvre un truc...t'as un lien montrant ça? :??:


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 29-03-2005 à 17:28:35    

http://fr2.php.net/manual/fr/funct [...] andler.php


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 29-03-2005 à 17:28:35   

Reply

Marsh Posté le 04-04-2005 à 22:37:00    

skeye a écrit :

Fichtre![:dawa]
Je découvre un truc...t'as un lien montrant ça? :??:


 
Ben c'est le cas des forums justement, en PHPBB notamment, non ?
 
Justement, j'aimerais bien pouvoir faire un petit module de sessions qui fait appel aux DB ... faire appel à une DB je sais faire, écrire dedans aussi, mais ce sont ces *$&$*ù$& de sessions qui refusent de fonctionner correctement ... chuis maudit ! Z'auriez pas un exemple de truc qui marche ? Siouplait ^^.


Message édité par mahuf le 07-04-2005 à 22:42:51
Reply

Marsh Posté le 04-04-2005 à 23:05:14    

session stockée en bd ?

Reply

Marsh Posté le 04-04-2005 à 23:25:46    

mahuf a écrit :


Si je veux allouer des logins et des mots de passe, je fais comment ?


mahuf a écrit :

Justement, j'aimerais bien pouvoir faire un petit module de sessions qui fait appel aux DB ... faire appel à une DB je sais faire, écrire dedans aussi, mais ce sont ces *$&$*ù$& de sessions qui refusent de fonctionner correctement ... chuis maudit ! Z'auriez pas un exemple de truc qui marche ? Siouplait ^^.


Vu ce que t'as écris plus haut, je suis pas vraiement sûr que ce soit utile de commencer par ça [:ula]  
Commence déjà par tester ce qu'a donné Simogeo plus haut :
 

simogeo a écrit :

Code :
  1. <?php
  2. session_start();
  3. $_SESSION['ourson']="winnie";
  4. echo "je suis ".$_SESSION['ourson']. "l'ourson";
  5. ?>




---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 16:26:25    

Lol, oui ça ça marche  :pt1cable:  
 
Ce que je veux savoir, c'est comment faire appel à une variable stockée en DB pour la comparer avec une valeur postée. J'ai essayé avec des codes du genre

Code :
  1. <?php
  2. session_start();
  3. $pseudo = $_POST['pseudo'];
  4. $mdp = $_POST['mdp'];
  5. include ('config.php'); // qui contient toutes mes données
  6. $db = mysql_connect($base,$login,$password) or die('Problème de connexion');
  7. mysql_select_db('base',$db);
  8. $sql = 'SELECT login, mdp FROM table WHERE login = $pseudo';
  9. $req = mysql_query($sql) or die("Erreur de requête" );
  10. while ($data = mysql_fetch_assoc ($req))
  11. {
  12. if ( $data['mdp'] == $mdp)
  13.         [...]


 
C'est là que ça plante. Quand je modifie les paramètres, soit il refuse de se connecter, soit il se connecte pour n'importe quelle valeur ... donc je sais pas vraiment quoi faire.


Message édité par mahuf le 07-04-2005 à 22:43:05
Reply

Marsh Posté le 05-04-2005 à 16:45:10    

Commence d'abord à faire la différence avec le double quote " et le simple quote '.

Code :
  1. $pseudo = 'mahuf';
  2. //~~~~~~~~~~ Exemple 1~~~~~~~~~~
  3. $sql = 'SELECT login, mdp FROM table WHERE login = $pseudo';
  4. echo $sql;
  5. // renvoie à l'écran : SELECT login, mdp FROM table WHERE login = $pseudo
  6. //~~~~~~~~~~ Exemple 3~~~~~~~~~~
  7. $sql = "SELECT login, mdp FROM table WHERE login = $pseudo";
  8. echo $sql;
  9. // renvoie à l'écran : SELECT login, mdp FROM table WHERE login = mahuf
  10. //~~~~~~~~~~ Exemple 3~~~~~~~~~~
  11. $sql = "SELECT login, mdp FROM table WHERE login = '$pseudo'";
  12. echo $sql;
  13. // renvoie à l'écran : SELECT login, mdp FROM table WHERE login = "mahuf"
  14. //~~~~~~~~~~ Exemple 4~~~~~~~~~~
  15. $sql = 'SELECT login, mdp FROM table WHERE login = "'.$pseudo.'"';
  16. echo $sql;
  17. // renvoie à l'écran : SELECT login, mdp FROM table WHERE login = "mahuf"

L'exemple 1 est sûrment pas l'effet recherché.
L'exemple 2 apparaît correct mais ne permettra pas à la bdd de comprendre ta requête (un champ texte doit être délimité par des quotes (" ou '))
L'exemple 3 marchera mais vaut mieux pas prendre ce type d'habitude
L'exemple 4 est celui à suivre (et à bien assimiler)


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 16:51:06    

J'avais même pas pensé à ça ... c'est sûr que echo '$var' et echo "$var" ça ne donne pas la même chose ! lol
 
Par contre je comprends pas pour 'la DB ne comprend pas ma requête' : tu veux dire que pour comparer le champ texte représenté par la variable, il doit être représenté impérativement entre guillemets ? Même si le serveur détecte qu'il a remplacé la valeur par une variable ?
 
PS : je savais pas qu'on pouvait faire comme l'exemple 3. Ca marche sans concaténation ???

Reply

Marsh Posté le 05-04-2005 à 16:52:47    

Je rajoute ppour pas que tu t'emballes que le raisonnement est faux [:jagstang]  
Donne un $pseudo vide ou erroné avec un $mdp vide, ça passes...


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:00:45    

mahuf a écrit :


Par contre je comprends pas pour 'la DB ne comprend pas ma requête' : tu veux dire que pour comparer le champ texte représenté par la variable, il doit être représenté impérativement entre guillemets ? Même si le serveur détecte qu'il a remplacé la valeur par une variable ?

Ton serveur PHP, c'est une chose, ta BDD, c'est autre chose. Le lien qui leur permet de communiquer, c'est le mysql_query, qui fait que le serveur PHP fait une requête à ta BDD.
 
Bref, c'est comme ça, si tu fais une requête, pour que ta BDD puisse comprendre qu'il s'agit d'une chaîne, faut le lui dire (tout comme php), et ça ne s'applique pas quand le champ est de type entier.


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:01:55    

Je viens de voir ça à l'instant ...  
 
Hum ... il faut que je précise avec des conditions
if ($mdp != '' and $login != '')
ou ça ne marchera pas non plus ?
 
Whatever, j'essaye ^^.

Reply

Marsh Posté le 05-04-2005 à 17:06:54    

Quand ça marche, t'essaiera aussi avec un pseudo du style :
pseudo = prout"'; echo $login,'-',$password,'


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:19:28    

Pour la sécurité, on verra ensuite avec les addslashes ^^
 
Là il refuse carrément de se connecter ... il n'affiche jamais mon résultat voulu ... par contre il ne connecte pas n'importe qui (normal, personne ne se connecte ^^)

Reply

Marsh Posté le 05-04-2005 à 17:20:56    

Balance ton "code" :D


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:28:19    

Rhâââ, jamais ! Il fonctionnera ! Je vais me battre avec, mais ça va marcher ... grr !

Reply

Marsh Posté le 05-04-2005 à 17:29:35    

Master p a écrit :

Balance ton "code" :D


mahuf a écrit :

Rhâââ, jamais ! Il fonctionnera ! Je vais me battre avec, mais ça va marcher ... grr !


Fallait le prendre comme un "Fais péter ton code" :o


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:30:11    

Master p a écrit :

"Fais péter ton code" :o


 

Code :
  1. echo "prout!";


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 05-04-2005 à 17:31:13    

AAAAAAAh !!! D'ac ... lol.
 

Code :
  1. <?php
  2. session_start();
  3. $valid = $_POST['valid'];
  4. echo 'bouton : '.$valid.'<br>';
  5. if ($valid == 'OK')
  6. {
  7. $pseudo = $_POST['pseudo'];
  8. $mdp = $_POST['mdp'];
  9. include ("config.php" );
  10. $db = mysql_connect($base,$login,$password) or die('Problème de connexion');
  11. mysql_select_db('table_classe',$db);
  12. $sql = 'SELECT * FROM table_classe WHERE pseudo = "'.$pseudo.'"';
  13. $req = mysql_query($sql) or die("Erreur de requête" );
  14. if ($login != '' AND $mdp != '')
  15. {
  16. while ($data = mysql_fetch_assoc ($req))
  17.     {if ( $data['mdp'] == $mdp) {echo 'connecté';} else {echo 'mauvais mot de passe';}}
  18. }
  19. }
  20. else {
  21.  echo'<form method="post" action="test.php">
  22. Login <br>
  23. <input type="text" name="pseudo"><br>
  24. Password<br>
  25. <input type="password" name="mdp"><br>
  26. <input type="submit" value="OK" name="valid">
  27. </form>';
  28.  }
  29. ?>

Reply

Marsh Posté le 05-04-2005 à 17:31:58    

Il y a des lignes inutiles :
 
- ligne 3 avec le bouton c'est juste une vérification pour contôler des trucs


Message édité par mahuf le 05-04-2005 à 17:34:23
Reply

Marsh Posté le 05-04-2005 à 17:45:11    

Relis ton code bourdel :o
 
Ligne 7 : $pseudo = $_POST['pseudo'];
Ligne 14 : vérification sur $login
(je sais, c'est pas ça qui fait planter  :whistle: )


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:46:35    

skeye a écrit :

Code :
  1. echo "prout!";



L'usage des double quote est à proscrire pour une telle commande :o


Message édité par Master p le 05-04-2005 à 17:47:18

---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:46:39    

Ah m.... heu, je veux dire désolé ^^.
 
C'est sûr que si on se sert du login de la db ...

Reply

Marsh Posté le 05-04-2005 à 17:49:14    

Master p a écrit :

Relis ton code bourdel :o
 
Ligne 7 : $pseudo = $_POST['pseudo'];
Ligne 14 : vérification sur $login
(je sais, c'est pas ça qui fait planter  :whistle: )


 
Donc ça c'est fait ...
 
En passant, si le pseudo n'existe pas je fais quoi pour afficher à l'écran : le pseudo n'existe pas ? Parce que je peux pas mettre de else en face d'un while ...

Reply

Marsh Posté le 05-04-2005 à 17:49:18    

Master p a écrit :

L'usage des double quote est à proscrire pour une telle commande :o


[:rofl2]


---------------
Can't buy what I want because it's free -
Reply

Marsh Posté le 05-04-2005 à 17:49:21    

À quoi ressemble la table_classe ?
Quel est le résultat obtenu ?


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 17:53:10    

Le résultat obtenu :
- si je mets un login qui existe + un mdp qui existe : il me met 'erreur de mot de passe'
- je je mets un login qui n'existe pas il n'affiche rien quel que soit le mot de passe
- je je mets un login qui existe avec un mdp qui n'existe pas il me met : erreur de mot de passe
 
La table table_classe est :
pseudo, nom, prenom, password, surnoms, email, ID
varchar/varchar/varchar/varchar/varchar/varchar/tinyint

Reply

Marsh Posté le 05-04-2005 à 18:04:19    

1/ T'es sûr du contenu de ta variable $mdp ? affiche là.
2/ Pourquoi utiliser un while puisque tu n'attend qu'un seul résultat ?
3/ Ça saute aux yeux qu'il y a une requête plus rapide et qui demande moins de traitement. Creuse toi un peu le cervelet.


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le 05-04-2005 à 19:25:31    

Master p a écrit :

2/ Pourquoi utiliser un while puisque tu n'attend qu'un seul résultat ?


 
Exaaaaaaaaact ...
 
Sinon je me creuse le cervelet ^^ :D

Reply

Marsh Posté le 05-04-2005 à 19:32:19    

Ouais pour le creusage de cervelet je pense à un petit truc :
 
je peux mettre un  
'SELECT * FROM table_classe WHERE pseudo = "'.$pseudo.'" AND password = "'.$mdp.'"';
ça marcherait peut-être ça non ?

Reply

Marsh Posté le 05-04-2005 à 19:46:22    

Ca recommence ...
je suis sûr du résultat que j'ai obtenu pour la variable, mais avec ce code :
 

Code :
  1. <?php
  2. session_start();
  3. $valid = $_POST['valid'];
  4. if ($valid == 'OK')
  5. {
  6. echo 'bouton : '.$valid.'<br>';
  7. $pseudo = $_POST['pseudo'];
  8. $mdp = $_POST['mdp'];
  9. if ($pseudo != '' AND $mdp != '')
  10. {
  11. echo $mdp;
  12. include ("config.php" );
  13. $db = mysql_connect($base,$login,$password) or die('Problème de connexion');
  14. mysql_select_db('table_classe',$db);
  15. $sql = 'SELECT * FROM table_classe WHERE pseudo = "'.$pseudo.'" AND password = "'.$mdp.'"';
  16. $req = mysql_query($sql) or die('Les identifiants que vous avez spécifiés n\'existent pas');
  17. echo 'vous êtes connecté';
  18. }
  19. else {echo 'Veuillez remplir les champs !';}
  20. }
  21. else {
  22.  echo'<form method="post" action="test2.php">
  23. Login <br>
  24. <input type="text" name="pseudo"><br>
  25. Password<br>
  26. <input type="password" name="mdp"><br>
  27. <input type="submit" value="OK" name="valid">
  28. </form>';
  29.  }
  30. ?>


 
n'importe qui peut se connecter.

Reply

Marsh Posté le 05-04-2005 à 20:05:52    

Et ça maaaaaaaaaaaaaaaarche !!!
 
Il suffit de placer devant l'instruction echo 'vous êtes connecté' à la ligne 17 la petite ligne :
 
if (mysql_num_rows($req)>0) {echo 'vous êtes connecté';}
else {echo 'vous n\'êtes pas connecté';}
 
et ça marche.
 
Merci beaucoup Master p, pour ton assistance et ta patience, et surtout pour ta méthode qui me permet d'apprendre par moi même ... :jap:  :bounce:  :ange:

Reply

Marsh Posté le 05-04-2005 à 20:13:18    

De rien, si j'ai des problèmes de php, je viendrais te voir [:master p]
(Dingue ça, on me découvre des vertus pédagogiques [:arn0])


---------------
HAHAHA I M USING TEH INTERNET
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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