php + sql server login & séances
Bonjour, je suis en train de créer un login et session script php à utiliser pour sql server et je ne peux pas le faire fonctionner, il coutures comme pas de mater ce que j'ai mis dans le formulaire de connexion aslong comme il valide cela va fonctionner, je ne peux pas comprendre quel est le problème avec le code cependant, je viens de resently commencé à l'aide de php et de sql server et n'ont pas eu la quand on sait à comprendre le problème pour moi si soeone pourrait aider ce serait super, aussi, si vous connaissez tout bon tutoriel sites qui utilisent sql server et php pourriez-vous s'il vous plaît partager car il ne marche pas de couture à être beaucoup de bon tutoriel sites pour eux malheureusement. toute aide est la bienvenu à ce stade. mon principal problème, c'est que ce n'est pas de vérifier si l'information affichée dans le formulaire html dans la base de données. (j'ai pris la validation js comme il ne marche pas de couture nessessary cependant que les œuvres)
Login.html
<form name="log" action="log_action.php" method="post">
Username: <input class="form" type="text" name="uNm"><br />
Password: <input class="form" type="password" name="uPw"><br />
<input name="submit" type="submit" value="Submit">
</form>
log_action.php
session_start();
$serverName = "(local)";
$connectionInfo = array("Database"=>"mydatabase","UID"=>"myusername", "PWD"=>"mypassword");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false){
echo "Error in connection.\n";
die( print_r( sqlsrv_errors(), true));
}
$username = $_REQUEST['uNm'];
$password = $_REQUEST['uPw'];
$tsql = "SELECT * FROM li WHERE uNm='$username' AND uPw='$password'";
$stmt = sqlsrv_query( $conn, $tsql, array(), array( "Scrollable" => SQLSRV_CURSOR_KEYSET ));
if($stmt == true){
$_SESSION['valid_user'] = true;
$_SESSION['uNm'] = $username;
header('Location: index.php');
die();
}else{
header('Location: error.html');
die();
}
index.php
<?php
session_start();
if($_SESSION['valid_user']!=true){
header('Location: error.html');
die();
}
?>
Merci pour votre aide les gars, vous pourriez être en mesure d'apporter
- En aparté, votre code est vulnérable à des attaques par Injection SQL (en.wikipedia.org/wiki/SQL_injection), il est extrêmement dangereux de concaténer directement saisie de l'utilisateur dans une requête. Apprendre au sujet des requêtes paramétrées, pour se défendre contre cette.
- Aussi, il n'est pas évident de déterminer quelle est votre question. Tout d'abord vous dire "je ne peux pas le faire fonctionner", puis vous le dire, "pas de mater ce que j'ai mis dans le formulaire de connexion aslong comme il valide il va travailler". Ce qui, exactement, est le problème que vous rencontrez?
- ce n'est pas de vérifier si le nom d'utilisateur et le mot de passe dans la base de données, indépendamment de ce que j'ai mis, il me conduira à la page de connexion, si elle n'existe pas, il doit me prendre pour une page d'erreur. et oui j'ai l'intention de faire une injection sql de prévention une fois que j'aurai un peu de scripts nd de course et je suis assez confortable workinb avec sql server
Vous devez vous connecter pour publier un commentaire.
Le problème, c'est que vous n'avez jamais fait de vérifier les résultats de la requête.
ne vérifie que la requête exécutée sans erreur - il n'est rien dit sur les résultats retournés par la requête.
Par conséquent, vous devez utiliser le sqlsrv_fetch de la fonction (ou l'une des fonctions connexes) d'examiner réellement le résultat de la requête.
Dans votre cas particulier, il suffit de vérifier si l'ensemble a des lignes avec sqlsrv_has_rows devrait être suffisant.
Désolé si c'ins pas comment vous pouvez répondre, je ne suis qu'un newbie, mais je pense que j'ai quelque chose à contribuer. Voir si ce code fonctionne pour vous:
HTML:
Si vous le souhaitez, vous pouvez faire de même avec sqlsrv_fetch combiné avec sqlsrv_get_field().
Qqch comme:
HTML:
Je ne recommande pas, mais vous pouvez utiliser sqlsrv_num_rows() pour vérifier le nombre de lignes, mais vous devez configurer certains paramètres de la sqlsrv_query: $sqlsrv_query($conn, $stmt, array($params), array( "Scrollable" => SQLSRV_CURSOR_KEYSET )) ou qqch comme ça.
Je vous remercie pour l'occasion!!! 😀
Bonne chance!