Miért nem működik?
<?php
require_once('weboldal/connect.php');
if(isset($_POST['submit'])){
if(isset($_POST['username']) && isset($_POST['jelszo']) && isset($_POST['email']) && !empty($_POST['username']) && !empty($_POST['password']) && !empty($_POST['username'])){
$username=htmlentities(htmlspecialchars($conn->real_escape_string(trim($_POST['username']))));
$password=htmlentities(htmlspecialchars($conn->real_escape_string(trim($_POST['password']))));
$email=htmlentities(htmlspecialchars($conn->real_escape_string(trim($_POST['email']))));
$conn->query("
INSERT INTO `users` (`id`, `username`, `password`, `email`, `csatlakozas`)
VALUES (NULL, '{$username}', '{$password}', '{$email}',NOW())
");
}else{
echo "baj van";
}
}
?>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<table>
<tr>
<td><form action="index.php" method="post"></td>
</tr>
<tr>
<td>Felhasználónév: <input type="text" name="username" /></td><br />
</tr>
<tr>
<td>Jelszó: <input type="password" name="password" /></td> <br />
</tr>
<tr>
<td>Email: <input type="tect" name="email" /></td> <br />
</tr>
<hr />
<td><input type="submit" value="Küldés!" /></td>
</form>
</table>
<hr />
</body>
</html>
connect.php:
<?php
$conn = mysql_connect("localhost", "root", "")
or exit("Nem sikerült kapcsolódni a MySQL szerverhez!");
@mysql_select_db("weboldal")
or exit("Nem sikerült csatlakozni az adatbázisra!!!");
mysql_query("SET NAMES 'latin2'");
mysql_close($conn);
?>
$_POST['jelszo'] van password helyett, a username meg 2x.
Egyébként ha a submit-ot megvizsgálja a script hogy létezik-e, akkor utána már felesleges a mezőket is, nem?
#1: az átadott változókat mindig meg kell vizsgálni szerveroldalon, mert kliens oldalon bármikor bele lehet piszkálni javascripttel
Kérdező, a connet.php végén csatlakozás után rögtön le is zárod a kapcsolatot. Ez így nem túl hasznos.
Másrészt vegyesen használsz procedurális és osztályszintű hívásokat, ennek sem látom értelmét.
Az egészből úgy érzem nem tudod mi mit csinál, csak összeollóztad az egészet és reméled, hogy működni fog. De sajnos ez nem így működik. Menj végig a kódodon, és ha valamelyik sorával nem vagy tisztában, hogy mit és miért csinál, akkor ott állj meg, és nézz utána, tanuld meg a lényegét.
#2 A vizsgálatot úgy értettem, hogy a mezők létezését (isset).
Tehát, ha a php úgy kezdődik, hogy if(isset($_POST['submit'])), és ez igaznak bizonyul, akkor felesleges a mezők létezését is megvizsgálni isset-el, nem?
A mezők tartalmát kell megnézni, hogy üres-e, és ha nem, akkor az elposztolt adatokat szűrni, mielőtt adatbázisba eltárolnánk.
#3, értettem, amit írtál. Ha egy ellenőrző kérdést (mondjuk "elfogadom a feltételeket" checkbox-ot) kiveszek konzollal a formból, egy ellenőrzés nélküli feldolgozó script lehet, hogy átengedi a usert, jobb esetben php hibával elszáll, mert nem tudja vizsgálni a nem létező post-ot.
Speciel a checkboxot pont létezésre vizsgáljuk, de szerintem a lényeg érthető volt.
Ha olyasmit fejlesztesz, aminél fontos a biztonság, akkor nem csak az üzemszerű használat hibátlanságára kell odafigyelni, hanem arra is, hogy valaki megpróbálhat a kliens oldalon ügyeskedni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, 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!