Php: session_register pourquoi pas?

bonjour à tout le monde,

je suis novice en programmation et je me suis lancer dans la création d’une page de connexion donc a l’aide d’un mot de passe et d’un login:
vous n’aurai certainement pas besoin de tout mon code (ci-joint) pour répondre à ma question en effet je cherchais un moyen pour que le programme verifie que les login et mot de passe correspondent et existent bien dans la BDD, ducoup j’ai fait une recherche sur internet et j’ai trouvé qui était possible d’utiliser la fonction "session_register() j’ai vu qu’il existait beaucoup de fonction session comme “session_start()” j’ai pas trop compris ce qu’elle était l’utilité de cette fonction concrétement…mais elle fait marcher mon programme…
Pouvez vous me l’expliquer?
Et pourquoi est t’elle obsoléte?
Y’a t’il un autre moyen d’obtenir le méme résultat?

merci de vos réponce =)

<?php //connection au serveur $connect=mysql_connect("localhost","root","root"); //check de la connection au serveur if(!$connect) { echo "la connection au serveur a échoué"; } //connection à la base de donnée $connect_bd=mysql_select_db("pc_data"); //check de la connection a la BDD if(!$connect_bd) { echo "impossible d'acceder a la base de donnée"; } //récupération des informations entrés dans le formulaire $mdp= $_POST['mdp']; $login= $_POST['login']; //requete $requete1="select * from identification where login='$login'and mdp='$mdp';"; //exécution de la requete $rep_req=mysql_query($requete1); // $rows1=mysql_num_rows($rep_req); if($rows1==1) { [b]session_register("login"); session_register("mdp"); header("location:accueil.html");[/b] } else { header("Location:login_error.html"); } ?>

Hello,

Capable de faire un simple copier-coller de code pecher sur le net, mais incapable de faire des recherches sur des fonctions pour les comprendre…:nexath

http://www.php.net/manual/fr/book.session.php

http://www.siteduzero.com/tutoriel-3-14563-variables-superglobales-sessions-et-cookies.html#ss_part_2
Edité le 02/08/2012 à 14:18

Pas faux.

php.net…

Bref, utilise $_SESSION[‘x’] = $x; en lieu et place de session_register(‘x’);

justement j’ai DEJA visité ce site xD mais je ne comprend pas ce qu’est un registre … enfin tant pis il semble que vous n’ayez pas les connaissances pour m’aider bonne continuation.

De quelles connaissances parles-tu ? En PHP ? Je dois avoir 10~12 années de PHP à mon actif, et j’ai aidé bien plus de gens sur ce forum que tu ne le penses :slight_smile: Je ne dis pas ça pour paraître prétentieux, non plus que je ne dis pas que je suis le plus au fait des dernières nouveautés, mais le changement de fonctionnement des sessions date facilement d’il y a 5 ans. Et ce concept (les sessions) date facilement d’il y a 20 ans, si ce n’est plus.

Maintenant, c’est comme toute chose : il y a le fond, à savoir un problème d’apprentissage du langage, et la forme, à savoir poser les bonnes questions ou diriger tes interlocuteurs vers ce que tu ne comprends pas. Et là pour le coup, aucune connaissances ne permet de deviner ce qu’attendent les gens, encore moins ce que toi tu attends.

D’autant que tu ramènes avec un problème donné, c’est que tu es en attente d’une résolution; étant donné ce contexte, on cherche plutôt à brosser dans le sens du poil ses interlocuteurs plutôt que de les agacer… Du moins, c’est en général comme cela que ça se passe.

Et pour informations :

  1. La fonction session_register() ne fait pas fonctionner ton programme. Elle ne fait qu’enregistrer le login/mot de passe, donc si quelque chose doit faire fonctionner quelque chose, ce n’est certainement pas ça. En l’occurrence, de ce que je devine du script, tu as un formulaire POST dans lequel tu as deux champs login & mdp que tu récupères bêtement avec le tableau $_POST.

  2. La requête SQL contient une injection SQL.

En gros ? Si tu comprends que select * from identification where login = ‘foobar’ and mdp = ‘foobar’ te permet de rentrer sur la page parce que le couple login/mot de passe est valide, alors sache que rentrer ’ or 1=1 limit 1 comme mot de passe permet aussi de rentrer sur la page.

Il faut protéger ta requête : $requete1= sprintf(“select * from identification where login=’%s’and mdp=’%s’”, mysql_real_escape_string($login), mysql_real_escape_string($mdp));
Je te laisse lire la documentation sur sprintf et mysql_real_escape_string. La requête est mieux protégée, et tu peux utiliser les requêtes préparées pour la protéger encore plus. cf. fr.php.net…

  1. Le ?> ne sert à rien quand tu fais des redirections via header(). En gros, PHP démarre par <?php mais peut ne pas être terminé par ?>. Cela a été fait de sorte à ce que si tu dois modifier les entêtes - ce que tu fais - tu n’ai pas de sortie (par exemple des caractères blancs) qui provoqueraient la fameuse erreur Cannot modify header information : headers already sent by.