Mysql információs nyomógomb nem sikerül. Miért? Többi lent
Szóval van ez ahol vannak a szerveroldali részek:
<?php
include "connect.php";
$cim = $_POST['inputName'];
$szoveg = $_POST['inputPass'];
$datum = $_POST['inputAuth'];
if(!$_POST['submit']){
echo "Please fill out the form";
}else{
mysql_query("INSERT INTO web_hirek (`id`,`cim`,`szoveg`,`datum`) VALUES (`NULL`,`$cim`,`$szoveg`,`$datum`)");
echo "Hir hozzáadva!";
}
nyomógomb rész:
<h1>Hír beküldés</h1>
<form action=" [link] method="post">
Username:<input type="text" name="inputName" value=""></input><br>
Password:<input type="text" name="inputPass" value=""></input><br>
Authority:<input type="text" name="inputAuth" value=""></input><br>
<input type="submit" name="submit" value="Add new member"></input>
</form>
Nem rakja be sql-be.
id-nek "NULL" szöveget adsz. Csak simán NULL legyen vagy teljesen hagyd ki az id-t a beillesztésből.
ui.: Ne használj mysql függvényeket, és ne ellenőrizetlenül tedd az űrlap értékeket. Mert: a mysql elavult és egyre kevésbé támogatott (mint php alól való kapcsolat! nem mint adatbázis), az ellenőrzés meg mysql injection és XSS miatt kell.
1. Mint az előző hozzászóló is írta: a mysql modul elavult - használj helyette mysqli-t vagy PDO-t.
2. Az űrlapról érkező adatokat sohase add át nyersen a lekérdezésnek - minimum escapeld (mysqli_real_escape_string).
3. Jelszót sosem tárolunk titkosítatlanul. Minimum "sózott" ellenőrzőösszeget készítünk belőle, akár több metódus kombinálásával (például: sha1("hosszuveletlensorozat".md5("masikhosszuveletlensorozat".$password)) ).
4. Ha az id oszlop egy elsődleges kulcs, akkor érdemes használni az AUTO_INCREMENT-tet, így nem kell megadni az értékét az adatbázishoz való hozzáadáskor.
5. Látok ott egy dátum oszlopot - az valahogy (legalábbis számomra) nincsen összefüggésben az űrlappal. Mi célt szolgál?
Ha a regisztráció dátumát, akkor SQL-ben ott a NOW() függvény:
Ja és:
6. Használj valamilyen megoldást a tömeges beküldések elkerülése végett - például Captcha-t.
Neem... én azokat nem írtam át. Egyik sem jelszó lenne. csak copy-ztam és amit átkell azt átírtam hogy lássam hogy jó-e mert webről másoltam ki. de nem jó sehogy sem...
Már 10 órája ezzel szenvedek xD
mysql_query("INSERT INTO web_hirek (`cim`,`szoveg`,`datum`) VALUES ('$cim','$szoveg','$datum')");
1. MySQL megszűnt/szűnik MySQLi függvényeket használd majd.
Nem sokban tér el, mysql_* helyett mysqli_* és néhány funkció mint a query -nél elsőnek megadod a kapcsolat változóját, amit globalis változóba raksz...)
2. ID -t automatikusan adja, felesleges azt bele rakni.
3. ` helyett ' jel kell values adatoknál. ` jelek közé SQL mezők tábla nevek kerülnek, aposztróf vagy idéző jelek közé pedig tartalom.
4. escapeld a beviteli mezőket, mert így SQL injektálható, azaz tetszőleges SQL parancsot csinálhatnak belőle...
+1: javaslom " jelek helyet aposztrófot használj, igaz akkor hozzá kell fűzni a változókat, de nem futsz hibákba ha pl. jQuery -t írogatsz PHP -ból vagy sima $ jelet jelet szeretnél megjeleníteni.
mysql_query('INSERT INTO web_hirek (`cim`,`szoveg`,`datum`) VALUES ("'.$cim.'","'.$szoveg.'","'.$datum.'")');
értem, köszi!
Így működik: mysql_query('INSERT INTO web_hirek (`cim`,`szoveg`,`datum`) VALUES ("'.$cim.'","'.$szoveg.'","'.$datum.'")');
az escapálás az így működik ugye?: $cim = mysql_real_escape_string ($_POST['inputName']);
$szoveg = mysql_real_escape_string ($_POST['inputPass']);
$datum = mysql_real_escape_string ($_POST['inputAuth']); :D
amúgy a dátumot nem viszi be félreéértés neessék azt nem a gomb-al akarom bevinni. csak még nem tudtam miért nem írja be sql-be az adatokat.
sql táblában az oszlop datetime.
és a $datum = date("Y-m-d H:i:s");
nem viszi be a dátumot úgy hogy én ott feltüntettem hogy $datum az miért lehet?:O
dátumos problémát megoldottam :)
Már csak az a kérdésem maradt.
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!