[PhP] Bejelentkezés.
Üdv!
Van 1 kódom az miért van hogy jó adataimat írom be de helytelenül olvassa ki?
■ Van 1 kódom az miért van hogy jó adataimat írom be de helytelenül olvassa ki?
<?php
$felh = $_POST["users_felh"];
$pass = $_POST["users_pass"];
$con =mysql_connect("localhost","u_25862","pass","u_25862");
if(! $con){
die('Failed to connect: Connection Failed'.mysql_error());
}
$query = "SELECT * FROM habile_deathrun WHERE Felhasznalonev='$felh' and Jelszo='$pass'";
$result = mysql_query($query);
if($result["users_felh"]==$felh && $result["users_pass"]== $pass)
echo"Sikeresen bejeletnkeztél Felh: ",$result['Felhasznalonev'];
else
echo"Sajnáljuk rossz felhasználónév vagy jelszó. "; // mindig ez fut le sajnos., pedig a rendes felh nevem + jelszót írom be ami a táblába is benne van.
?>
$felh = $_POST["users_felh"];
$pass = $_POST["users_pass"];
$con =mysql_connect("localhost","u_25862","pass","u_25862");
if(! $con){
die('Failed to connect: Connection Failed'.mysql_error());
}
$query = "SELECT * FROM habile_deathrun WHERE Felhasznalonev='$felh' and Jelszo='$pass'";
$result = mysql_query($query);
if($result["users_felh"]==$felh && $result["users_pass"]== $pass)
echo"Sikeresen bejeletnkeztél Felh: ",$result['Felhasznalonev'];
else
echo"Sajnáljuk rossz felhasználónév vagy jelszó. "; // mindig ez fut le sajnos., pedig a rendes felh nevem + jelszót írom be ami a táblába is benne van.
?>
Hibakeresés
Problema
itt tobb problema is lesz.
1. ha megnezed a mysql_query() dokumentaciojat, az nem egy tombot (array) ad vissza, hanem egy MySQL resource objektumot. Vagyis a mysql_fetch_assoc() fuggveny nelkul nem fersz hozza az adatokhoz.
2. a mysql_* fuggvenyek hasznalata deprecated, 7-es PHP-tol mar nem fognak mukodni, helyette erdemes atallni a mysqi_*-ra vagy a PDO-ra.
3. az alkalmazasod egy un. SQL injection sebezhetoseget tartalmaz mivel a felhasznalotol erkezo adatokat (felhasznalonev es jelszo) kozvetlenul beleirtad az SQL querydbe. Ezzel az injection sebezhetoseggel legjobb esetben barki be tud lepni az alkalmazasba, legrosszabb esetben letorolhetik az egesz adatbazisodat. Nezz utana es javitsd ki.
Ne itt kezdd
A "kódod" pontosan azt hajtja végre, amit bele írsz.
Kezdésnek a
$result = mysql_query($query);
sor után tegyél be egyvar_dump($result);
sort..Ezen kívül fejleszteni mindig célszerű
Szerintem a tanulást ne ott kezdd, hogy "csinálok egy login rendszert".
Sokan beleesnek ebbe a hibába - és bizony a gyakorlott fejlesztők között is van aki nem tudja elég biztonságosan lefejleszteni. Egyszerűbb feladattal kezdj, az még nagyon messze van, hogy éles és legalább picit biztonságos felhasználókezelést megvalósíts.
plaintext
Tök mindegy
Szimplán a "hash-eld" felszólítás egy kezdőnek nem tudom, hogy mennyivel jelent többet egy
md5($jelszo)
- nál (NEHOGY valaki kipróbálja!!), és ebben a fórumtémában kicsit meg is érintettük a témát, miszerint annyira legyünk biztonságtechnikai szakértők, amennyire űrhajósok. :)Ha a fentiek javítása
mysql_fetch_assoc()
tömbindexként alapból az adatbázisbeli mezőneveket fogja használni, márpedig aselect
ből úgy néz ki a mezőnevek nem users_felh és users_pass. Azaz valószínűbb, hogy inkább$result['Felhasznalonev']
és$result['Jelszo']
tömbelemeket fogsz kapni. Ha fogsz. Mert ha a felhasználónév vagy jelszó hibás, aselect
egyáltalán nem fog adatot visszaadni.Igazatok volt!
Rossz volt az egész sajnos, nem tudom hogy ezen a fórumon hogy működik, de ha lehet akkor nyugodtan zárjátok a témát. és köszönöm mindenkinek aki segített (bocsánat 2-3 napja kezdtem a php-t)
További szép napot!
Semmi gond
Ebben az esetben viszont tényleg nem szabad felhasználókezeléssel indulni, mert hatalmas bukta lesz.
HTML - CSS elsőre. Csinálj pár statikus oldalt, legyen annyira szép, hogy meg lehessen nézni.
JS a második. Legyen valami kis logika, ami "működik". Pl ha egy képre kattintok, akkor az kezdjen el fel - le ugrálni. :) Vagy az oldal betöltődése után az a menü, amelyiknek éppen az oldalát látom, az legyen színesebb a többinél ("aktív menü").
PHP a harmadik. Pl a menü egyetlen fájlban legyen, mégis mindegyik oldalon látsszon és ugyanott. Aztán legyen egy form, ahol bekérjük a user nevét, és ha elég hosszú nevet beírt, akkor írjuk ki neki, hogy "Szia [beírt név]! Hogy vagy?" Aztán egy kicsit legyen komolyabb ellenőrzés, ha olyasmit küld be, ami valószínűleg nem név, akkor csak azt írjuk ki, hogy "ne szórakozz!".
MySql a negyedik. Csak ha fentiekkel már lett egy pici rutin, csak akkor kezdünk el bármit is "adatbázisolni".
Először "csak" mentsük el egyetlen táblába az összes beérkező adatot, de ezt biztonságosan tegyük, bármit beírt a user, mindenképp azt és csak azt tegyük egyetlen táblába. Legyen mégegy oszlop, a státusz, ezzel megjelöljük, hogy a PHP-s részben megvalósított ellenőrzés szerint ez rendes név, vagy szórakozott velünk.
Következő lépésként jöhet mondjuk egy kis type ahead, leendő ajax és MySql tudásunk segítségével "dobjunk ki" a név input mező alá (szépen, mintha lenyíló lenne!) 5 lehetséges értéket, ha már beírt legalább 3 betűt. Természetesen olyanokat, amik tartalmazzák azt a szöveget, amit beírt.
Ezen az úton haladj.
Rajtad múlik, hogy mennyi idő, megunod-e közben, stb.
Hidd el: jót akarunk, csak azért írtam ezt a "mesesztorit" a sorrendről, mert nem szeretném, hogy beletörjön a bicskád. Ha csak ennyit végigcsinálsz - pusztán a tanulásért -, akkor menet közben Te is rengeteg dolgot meg fogsz látni, amik miatt nagy kár lett volna "felhasználókezelést" "hegeszteni". (Nem véletlen az idézőjel.)