Miért nem működik ez a php kód?
Egy egyszerű login rendszerről van szó, és valószínű hogy egy egyszerű hibát vétettem, de nem jövök rá h miért nem jó... ha jó adatokat írok be akkor is a kettes hibaüzenettel dob vissza, ami a hibás fhnév vagy jelszó
<?
require 'config.php';
function hiba(){
print("A mûvelet során hiba lépett fel");
}
if ($_SERVER["REQUEST_METHOD"] == "POST"){
if(isset($_POST['account-name']) && isset($_POST['account-password'])){
$fhnev = mysql_real_escape_string($_POST["account-name"]);
$jelszo = mysql_real_escape_string($_POST["account-password"]);
}
if (empty($fhnev) or empty($jelszo)){
header("Location: login.php?hiba=1");
die;
}
$reg_keres = mysql_query("SELECT * FROM felhasznalok WHERE fhnev = '".mysql_real_escape_string($fhnev)."' AND pass = '".mysql_real_escape_string($jelszo)."'");
$reg = mysql_fetch_assoc($reg_keres);
$rekordok = mysql_num_rows($reg_keres);
if ($rekordok > 0){
if ($reg["kitiltva"] == "nem"){
setcookie("fhnev", "".$fhnev."", time()+31536000);
setcookie("jelszo", "".$jelszo."", time()+31536000);
setcookie("id", "". 0 + $reg["id"]."", time()+31536000);
header("location: fooldal");
} else {
header("Location: login.php?hiba=3");
}
}
if($rekordok == 0)
header("Location: login.php?hiba=2");
}
if (isset($_GET["hiba"])) {
$hiba = 0 + $_GET["hiba"];
if ($hiba == 1){
hiba("Hiányos adatok!", "<center>Belépéshez mindenképp kell név és jelszó is, ezek nélkül nem fog menni!</center>");
}
if ($hiba == 2){
hiba("Hibás felhasználónév/jelszó!", "<center>Hibás felhasználónév vagy jelszó!</center>");
}
if ($hiba == 3){
hiba("Bamm..", "<center>Az oldalról ki lettél tiltva.<br> Ha nem tudod miért, akkor írj az oldal alján található kapcsolat menüpontban.</center>");
}
}
?>
<body>
<link rel="stylesheet" type="text/css" href="style/style.css">
<meta charset="UTF-8" lang="HU">
<head>
<title>Fórum :) - Beta</title>
<div id="loginkep"><img src="/images/lock-icon.png"></div>
<form method="post" action="login.php">
<table><tr>
<td><!-- <b><font color="#037094" size="5">Bejelentkezés</font><b><br><br>!-->
<div id="fhnev-box"><input type="text" name="account-name" placeholder="Felhasználónév"></div><br>
<input type="password" name="account-password" placeholder="Jelszó"><br>
<div id="remember"><input type="checkbox" checked="checked" name="remember"> Jegyezz meg</div><br>
<input type = "submit" value = "Belépés" class="sz1"><button type="button" class="reg-button">Regisztráció</button><br><br>
<div id="forgot-password"><a href="pw-reset.php"><font color="black">Elfelejtett jelszó :(</font></a></div>
</td>
</tr>
</table>
</form>
</head>
</body>










1. a hiba() függvénynek kellenének paraméterek, ha azzal hívod őket meg
pl. function hiba($error, $explanation) {...} vagy valami ilyesmi
2. döntsd el, hogy a magyar vagy az angol nyelvet akarod használni; ne keverd!
3. A JELSZAVAKAT NE SIMÁN TÁROLD AZ ADATBÁZISBAN, használj valami hash függvényt ( [link] )
4. ÉS NEHOGY, ISMÉTLEM, NEHOGY TÁROLD A JELSZÓT SÜTIBEN!
5. ne közvetlenül kezeld a sütiket, használd a PHP session függvényeit ( [link] )
6. $hiba = 0 + $_GET["hiba"]; - nagyon ötletes, de inkább használd az intval függvényt ( [link] )
7. nincsen <html> és </html> tag
8. az egész tartalom a <head>-ben van... valahogy így nézzen ki: [link]
9. a hiba() függvénnyel ki akarsz íratni, no de az a még a <body> tag "előtt" van meghívva, így a szöveg a <body> előtt lesz a szöveg kiírva, ami durván áthág minden HTML szabványt
lehetne valami ilyesmi:
<?php
...
if (...) {
$error_msg = "lkshfkjsdhf";
}
....
?>
<html>
<head>...</head>
<body>
<?php if (isset($error_msg)): ?>
<div class="error">
<?php echo($error_msg); ?>
</div>
<?php endif; ?>
</body>
</html>
10. ez egy kisebb dolog, de inkább else-if-t használj ahelyett, hogy mindig teljesen "új" if-t hozol létre; ennél jobb (szerintem) ha itt switch-t használsz ( [link] )





Eleve a HTML rész is hibás:
* nincs DOCTYPE
* nincs <html> tag
* a <link>, <meta> tagek a <head> elemen kívül vannak
* a <head> tag a <body>-n belül van, amin belül nem a <head>-be való elemek vannak.
* táblázatos oldalszerkezet - elavult
* <font>, <b>, <center> tag - elavult
* <br> helyett tessék css-t használni a margóhoz
A PHP-ban pár nüansz:
* A mysql függvények elavultak - helyette ott a mysqli vagy a PDO
* A jelszót titkosítatlanul nem tároljuk adatbázisban - maximum az ellenőrzőösszegét. És nem küldjük el sütiben a kliensnek.
Egyébként var_dump() segítségével nézd meg, sikeresen végrehajtódik-e a lekérdezés, mik a rekordok, hány sort ad vissza, stb...










Ez a kód több sebből vérzik!
1. Nem jó ötlet duplán escape-elni az inputot. Ha már az elején letisztázod, akkor az SQL query-ben miért escapeled megint?
2. A mysql függvények elavultak, NEM szabad őket használni. PHP7-ben már benne sincsenek. Helyette mysqli vagy PDO használatos!
3. Jelszót NEM tárolunk plain text-ben, csak és kizárólag hash-ként, azt is sózva. Óriási biztonsági hiba letárolni a teljes jelszót az adatbázisban!
4. Cookie-ba meg pláne nem tesszük bele a jelszót, mert az is titkosítás nélkül landolg a user gépén.
5. Adatbázisban logikai mezőt boolean vagy tinyint típusban tárolunk, 0 és 1 értékkel, nem pedig stringként "igen" / "nem" karakterlánccal!
6. A HTML-ben is használtál pár deprecated tag-et, pl FONT, ami helyett CSS-t illik használni.
Oké, lehet, hogy most tanulod csak, de az ilyeneket az elején kell megtanulni, hogy ne a rossz szokások rögzüljenek!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!