Connexion bdd /mysqli erreur

DJ2809 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour à tous,
Je vous sollicite pour un problème de connexion à ma BDD. J'ai une base de donnée nommée db_test contenant une table :users (id, user_name, password, name)
La connexion s'établi sans problème mais j'ai un message d'erreur et par conséquent je n'arrive pas à accéder formulaire d'accueil. Je précise que je débute en php/mysql
l'erreur que j'ai obtenu :
Connexion au serveur MySQL établie avec succès.
Fatal error: Uncaught TypeError: mysqli_query(): Argument #1 ($mysql) must be of type mysqli, null given in /homepages/0/d908709233/htdocs/login.php:27 Stack trace: #0 /homepages/0/d908709233/htdocs/login.php(27): mysqli_query(NULL, 'SELECT * FROM u...') #1 {main} thrown in /homepages/0/d908709233/htdocs/login.php on line 27


Voici le code des deux fichiers:
<<?php
$sname = 'db50088742124.hosting-data.io';
$db_name = 'dbs4471255128';
$uname = 'dbu774415';
$password = 'ChaCHA554';

$link = new mysqli($sname, $uname, $password, $db_name);

if ($link->connect_error) {
die('<p>La connexion au serveur MySQL a échoué: '. $link->connect_error .'</p>');
} else {
echo '<p>Connexion au serveur MySQL établie avec succès.</p>';
}
?>


le 2ème fichier:

<?php 

session_start();
include "db_conn.php";

if (isset($_POST['uname']) && isset($_POST['password'])) {

function validate($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}

$uname = validate($_POST['uname']);
$pass = validate($_POST['password']);

if (empty($uname)) {
header("Location: passw.php?error=User Name is required");
exit();
}else if(empty($pass)){
header("Location: passw.php?error=Password is required");
exit();
}else{
$sql = "SELECT * FROM users WHERE user_name='$uname' AND password='$pass'";

$link = mysqli_query($conn, $sql);

if (mysqli_num_rows($link) === 1) {
$row = mysqli_fetch_assoc($link);
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php");
exit();
}else{
header("Location: passw.php?error=Incorect User name or password");
exit();
}
}else{
header("Location: passw.php?error=Incorect User name or password");
exit();
}
}

}else{
header("Location: passw.php");
exit();
}



Je vous en serais vraiment très reconnaissant de ce que vous me proposerez

Bonne soirée
DE

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

La variable que tu as utilisé pour la connexion à la bdd se nomme : $link
  $link = new mysqli($sname, $uname, $password, $db_name);


Hors, dans ton code, tu fais un truc bizarre ..
Déjà, tu utilises une variable nommée $con .. et en plus tu écrases ta variable $link
$link = mysqli_query($conn, $sql);


A corriger donc par
$query = mysqli_query($link , $sql);

if (mysqli_num_rows($query ) === 1) {
			$row = mysqli_fetch_assoc($query );

0
DJ2809 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Jordan. Cela fonctionne (Connexion au serveur MySQL établie avec succès) . J'ai besoin de basculer sur la page acc.php en récupérant le bon mot de passe de la base de donnée
Merci encore
DE
0
DJ2809 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Re bonjour,
En corrigeant mon code ci-dessous, j'ai une page blanche avec connexion établi avec succés mais rien ne s'affiche et en tapant n'importe quel mot de pass
Serait-il une histoire aussi de chemin relatif/absolu ?

ma page à atteindre est acc.php

if (mysqli_num_rows($link) === 1) {
$row = mysqli_fetch_assoc($link);
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php"


Merci de votre
Bonne journée
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Tu n'as pas repris le code que je t'ai donné dans ma réponse précédente ..
0
DJ2809 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
si si j'ai mis ça :

$sql = "SELECT * FROM users WHERE user_name='$uname' AND password='$pass'";

$query = mysqli_query($link , $sql);

if (mysqli_num_rows($query ) === 1) {
$row = mysqli_fetch_assoc($query );
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php");
exit();
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Primo .. merci d'utiliser les balises de code pour poster ton code sur le forum...

Deuxio ..
si si j'ai mis ça

Alors que tu avais collé le code :
ma page à atteindre est acc.php

if (mysqli_num_rows($link) === 1) {
$row = mysqli_fetch_assoc($link);
if ($row['user_name'] === $uname && $row['password'] === $pass) {
$_SESSION['user_name'] = $row['user_name'];
$_SESSION['name'] = $row['name'];
$_SESSION['id'] = $row['id'];
header("Location: acc.php"

Et après tu me dis que tu avais bien écrit le code ??

Et tertio .. si il ne se passe rien.. c'est sûrement que tu ne rentres jamais dans tes IF ..
Ajoutes donc des ELSE ( avec des echo de tes variables dedans) pour voir ce qu'il en est;
Je précise au passage qu'on ne stocke jamais le mot de passe en clair dans une bdd .. il te faut donc le hasher.
0