PHP beléptető sessionnal nem működik
2021-06-04T17:52:07+02:00
2021-06-10T01:29:16+02:00
2022-08-12T03:10:29+02:00
L@cus
Sziasztok,az alábbi kóddal dolgozom. Dolgoznék, ha működne.
Ha beírom a helyes felhasználónevet és jelszót akkor nem történik semmi az űrlap elküldése után. Viszont ha hibás adatokat küldök el akkor azonnal jön a hibaüzenet.
 Van valakinek ötlete?

<?php session_start(); header('Content-type: text/html; charset=utf-8'); include 'csatlakozasi_adatok.inc'; $message=""; if(count($_POST)>0) { $con = mysqli_connect($hostname, $felhasznalo, $jelszo, $db_neve) or die('Nem lehet kapcsolódni !'); $result = mysqli_query($con,"SELECT * FROM felhasznalok WHERE userName='" . $_POST["user_name"] . "' and password = '". $_POST["pass_word"]."'"); $row = mysqli_fetch_array($result); if(is_array($row)) { $_SESSION["id"] = $row['id']; $_SESSION["name"] = $row['name']; } else { $message = "Hibás felhasználónév és/vagy jelszó !"; } } if(isset($_SESSION["id"])) { header("Location:kezdooldal.php"); } ?> <html> <head> <title></title> </head> <body> <form name="frmUser" method="post" action="" align="center"> <div class="message"><?php if($message!="") { echo $message; } ?></div> <h3 align="center">Belépés !</h3> Felhasználó:<br> <input type="text" name="user_name"> <br> Jelszó:<br> <input type="password" name="pass_word"> <br><br> <input type="submit" name="submit" value="Mehet"> </form> </body> </html>
Előre is köszi a segítséget
Mutasd a teljes hozzászólást!
Kérlek, ezt az egészet úgy, ahogy van, dobd ki a kukába. Nem éri meg pofozgatni, még akkor sem, ha tanuló projekt.
1) Jelszavakat plain-textben sosem tárolunk adatbázisban. Regisztrációkor használd a password_hash függvényt, és az adatbázisban tárold el azt is, hogy milyen hash-t használtál a titkosításhoz!
2) Felhasználótól érkező adatot soha nem égetünk be SQL query-be szűrés nélkül (SQL injection sebezhetőség). Használj prepared statement-eket!
3) Válaszd külön a HTML kódot a PHP-tól, ne keverd a kettőt!
4) Sose küldj "SELECT *" típusú query-t az adatbázisnak! Mindig írd le, hogy milyen mezőket kérsz.

A tényleges problémának az okát én nem tudom. Csak a PHP kódot tetted ide, és nem látom, hogy néz ki a "felhasznalok" táblád (tényleg van-e neki "id" és "name" mezője). Amiket javaslok:
1) Állítsd az error reporting-ot E_ALL-ra: error_reporting(E_ALL);
2) Lehet, hogy a PHP scripted nem tudja létrehozni a session fájlt. Ha az error reporting-ot átállítod, akkor erről a PHP elvileg szól neked. Egyébként ezt a session_start() által visszaadott true/false érték is megmondja neked.
3) Bár elvileg nem kell, de amikor az átirányítást csinálod, a Location-t követő kettőspont után én tennék egy szóközt. Egyébként a szabvány szerint itt abszolút elérési utat kellene megadni, bár a böngészők tudják a relatívat is kezelni.
Mutasd a teljes hozzászólást!

abcd