Y compris la connexion de base de données de fichier en php
Je suis la création d'une simple possibilité de connexion en php pour mon site, maintenant j'ai tout essayé avant et ça a bien fonctionné, alors j'ai décidé de réorganiser mes fichiers par le regroupement de toutes mes fonctions dans un fichier, mes paramètres de base de données et de connexion dans un autre fichier et ma configuration de session (pour la course sur mon localhost) dans un autre fichier.
Le point pour moi, c'est simplement pour garder mon code propre et bien organisé et facile à comprendre pour moi dans l'avenir.
C'est ma page de connexion:
<?php
include('session-config.php');
include('dbconnection.php');
include('functions.php');
include('password_hash_lib/password.php');
if (isset($_POST['data']))
{
$data = $_POST['data'];
$auth = json_decode($data);
$user_email = $auth->Email;
$user_pass = $auth->Password;
authenticate($user_email, $user_pass);
}
function authenticate($Email, $Password)
{
$HashedPassword = password_hash($Password, PASSWORD_DEFAULT);
$sql = "SELECT * FROM app_users WHERE user_email='$Email'";
$result = $db->query($sql);
$User = $result->fetch_object();
if ($User->user_email == '')
{
header("Location: login-page.html?msg=failed");
}
if (password_verify($Password, $User->user_password_hash))
{
$_SESSION["user_auth_details"] = $User->user_id . "+" . $User->user_email . '+' . $User->user_name . "+" . $User->user_display_image . "+" . $User->user_display_name;
header("Location:" . $_SESSION['page_url']);
}
else {
header("Location: login-page.html?msg=failed");
}
}
?>
Et c'est ma connexion de base de données fichier:
<?php
$db = new mysqli("xxxxxxxxxxxxxxxxxxxxxxx", "xxxxxxxxxxxxx", "xxxxxxxxxxxxx", "xxxxxxxxxxx");
if($db->connect_errno > 0){
die('Unable to connect to database [' . $db->connect_error . ']');
}
?>
Comme vous pouvez le voir, j'ai inclus le dbconnection.php fichier dans mon login.php mais chaque fois que j'essaie d'appeler le authenticate()
fonction, cette erreur est retournée:
Notice: Undefined variable: db en C:\xampp\htdocs\xxxxxxxx\login.php sur la ligne 27
Erreur fatale: Appel à un membre de la fonction query() sur un non-objet dans C:\xampp\htdocs\xxxxxxx\login.php sur la ligne 27
Maintenant, je suis un peu confus à ce sujet, depuis que j'ai $db
définie dans mon dbconnection.php fichier et j'ai inclure ce fichier dans mon login.php page, je m'attendais à ça ou je me trompe?
vous n'avez pas instancié $db
Vous appelez
$db
de l'intérieur authenticate()
il doit donc être déclaré en tant que global; global $db;
S'il vous plaît je voudrais savoir quel est mon code vulnérable aux injections sql?
"s'il vous Plaît je voudrais savoir quel est mon code vulnérable aux injections sql?" --- Vous pouvez lire à ce => stackoverflow.com/questions/60174/...
OriginalL'auteur Blank EDjok | 2013-12-26
Vous devez vous connecter pour publier un commentaire.
Vous avez à mondialiser la variable avant de l'utiliser dans une fonction.
Il suffit d'ajouter cette ligne en haut de votre fonction:
Mais j'ai ce sujet de la dbconnection.php fichier? Dois-je mondialiser la variable y?
Pas de. Mondialisation est seulement nécessaire dans le champ d'application différent, comme une fonction. Je veux dire lorsque vous essayez d'utiliser une variable dans un autre champ(comme une fonction) que vous avez à mondialiser.
mondial signifie "s'il vous plaît trouver l' $db variable en DEHORS de cette fonction en tant que bien"
OriginalL'auteur Ahmad
Ajouter
global $db;
au début de votre fonction authentification.Cependant, je vous recommande fortement de vous apprendre à propos de PDO: http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers
Votre code est actuellement dangereux
OriginalL'auteur Nathan H
vérifier si votre base de données est connecté ou pas. utiliser la connexion de code comme ceci:
OriginalL'auteur Priya jain