MySQLi, fonctions et sessions
UnEtu
-
UnEtu -
UnEtu -
Bonjour,
J'utilisais avant la bibliothèque MySQL de php sans problèmes, mais j'ai du mal aujourd'hui avec MySQLi dans ce bout de code.
Dans cette fonction, on a bien le echo("test...) qui fonctionne, et après le isset($_SESSION) on a bien test réussi.
Pourtant, dès que je sors de la fonction je ne récupère plus le $_session
J'utilisais ce code avant, qui lui fonctionne sans problème
J'ai essayé sur mon premier code un global $_SESSION, au cas ou la session était reset après la fin de la fonction, mais sans succès, et la du coup je ne comprends pas...
Quelqu'un aurait-il une idée s'il vous plaît?
Cordialement, un étudiant
J'utilisais avant la bibliothèque MySQL de php sans problèmes, mais j'ai du mal aujourd'hui avec MySQLi dans ce bout de code.
function checklogin($username, $password) {
global $ip;
global $dbg;
global $error;
$pw = sha1($password);
$statement = $dbg->prepare('SELECT * FROM user where (username = ?)');
$statement->bind_param('s', $username);
$statement->execute();
$result = $statement->get_result();
$nbrows = mysqli_num_rows($result);
if ($nbrows ==0) {
$error = "Utilisateur non existant";
}
else {
foreach ($result as $row) {
if ($row["password"] == $pw) {
echo ("test : " . $row["username"] ."<br/>");
$_SESSION["username"] = $row["username"];
if (isset($_SESSION["username"])) {
echo("test réussi");
}
//$_SESSION["ID"] = $row["ID"];
//$_SESSION["userType"] = $row["userType"];
}
else {
$error = "Mot de passe ou nom d'utilisateur incorrect";
}
}
}
}
Dans cette fonction, on a bien le echo("test...) qui fonctionne, et après le isset($_SESSION) on a bien test réussi.
Pourtant, dès que je sors de la fonction je ne récupère plus le $_session
J'utilisais ce code avant, qui lui fonctionne sans problème
try {
$db = new PDO("mysql:host=localhost;dbname=erp","root", "");
$statement = $db->prepare("SELECT * FROM user WHERE username = :valeur");
$statement->bindParam("valeur", $_POST["username"]);
$statement->execute();
if ($statement->RowCount() == 0) {
echo("Le nom d'utilisateur ou le mot de passe est erroné");
}
else {
$result = $statement->fetchAll(PDO::FETCH_CLASS);
//$pw a été initié avant
$pw = sha1($pw);
if($result[0]->password == $pw) :
$_SESSION["username"] = $_POST["username"];
header("Location: main.php");
else :
echo("Le nom d'utilisateur ou le mot de passe est erroné");
endif;
}
}
catch(PDOException $e) {
echo($e->getMessage());
}
J'ai essayé sur mon premier code un global $_SESSION, au cas ou la session était reset après la fin de la fonction, mais sans succès, et la du coup je ne comprends pas...
Quelqu'un aurait-il une idée s'il vous plaît?
Cordialement, un étudiant
A voir également:
- MySQLi, fonctions et sessions
- Fonction si et - Guide
- Codes secrets Android : accéder aux fonctions cachées - Guide
- Fonctions excel en anglais - Guide
- Fonctions excel - Guide
- Libreoffice calc fonction si et ou - Forum Bureautique
1 réponse
(le post 5 minutes plus tard...)
Mon premier code étant une fonction plutôt qu'un code directement exécuté sur une page, j'ai rajouté un session_start(); dans la fonction et ça "marche".
Cependant, j'avais déjà fait un session_start(); avant (et nécessaire, donc je ne peut pas l'enlever), donc ça me renvoie un warning.
Y a-t'il une méthode plus propre, ou je dois faire comme ça et trap ce warning?
Cordialement,
un étudiant
Mon premier code étant une fonction plutôt qu'un code directement exécuté sur une page, j'ai rajouté un session_start(); dans la fonction et ça "marche".
Cependant, j'avais déjà fait un session_start(); avant (et nécessaire, donc je ne peut pas l'enlever), donc ça me renvoie un warning.
Y a-t'il une méthode plus propre, ou je dois faire comme ça et trap ce warning?
Cordialement,
un étudiant