re: Form küldése sikertelen
Van benne par szintaktikai hiba. Ezenkivul nem szurod a felhasznalotol jovo adatokat, ami biztonsagi kockazatot jelent. Pl valaki torli az egesz adatbazist, vagy kihuzza az osszes emailcimet maganak.
Szerintem fuss neki megegyszer :)
re: Form küldése sikertelen
Persze ez még csak teszt verzió, mi az a szintaktikai hiba?
re: Form küldése sikertelen
A programod azt csinálja, amit mondtál neki. Te pedig azt mondtad neki, hogy a $email változó értékét adja hozzá a query-hez. Mivel $email-nek nem adtál értéket, így a semmit adja hozzá. Szerintem te nagyon régi verziójú PHP leírást olvashattál, amikor még az elküldött mezők nevével megegyező változóba kerültek az értékek. Ez súlyos biztonsági hiba volt, és nagyon régen kivették már. Helyette van a $_POST tömb, amiből az "email" kulcsszóval éred ez az e-mail címet: $email = $_POST["email"]. A fent lévő kiírásos részben lévő "<input size=20 name="email" value="$email=$_POST["email"]" maxlength=50>" semmit sem csinál, csak egy "$email=$_POST["email"]" nevet adtál az inputnak, mivel <?php és ?> nincs, így ez sima HTML, de értelem szerűe ilyen neve nem lehet az inputnak.
Lassan 2014-et írunk. Ilyen kódot, a kódod siralmas, átláthatatlan, tele van hibákkal, biztonsági résekkel. Mielőtt neki akarsz vágni a programozásnak, ajánlom a PCWorld Weboldalkészítő suli leírását, vagy a W3schools oldalt (mert ma már van HTML5, nem a 20 évvel ezelőtti stílust kell használni), és nem magyar nyelvű, online leírások olvasgatását a PHP használatáról. Többek között nézz rá a a PDO-ra is, mert a PHP mysql_ függvénykönyvtára már ki lett vonva a forgalomból.
re: Form küldése sikertelen
Köszönöm a segítséget :D 25252525252525252525
re: Form küldése sikertelen
Még mindig nem jó beírtam ezt: <?php ?>
Mi lehet a hiba?
re: Form küldése sikertelen
Jófej voltam, és kijavítottam a kódodat (bár ebből te nem tanultál semmit):
HTML kód:
<form method="post" action="adatok.php">
<table>
<tr>
<td>Felhasználónév</td>
<td><input name="username" type="text" /></td>
</tr>
<tr>
<td>Jelszó</td>
<td><input name="password" type="password" /></td>
</tr>
<tr>
<td>Jelszó megerősítése</td>
<td><input name="password2" type="password" /></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="email" /></td>
</tr>
<tr>
<td>Nem</td>
<td>
<select name="gender">
<option value="1">Férfi</option>
<option value="2">Nő</select>
</select>
</td>
</tr>
<tr>
<td>Születési dátum</td>
<td>
<select name="year">
<option value="2000">2000</option>
</select>
<select name="month">
<option value="1">Január</option>
</select>
<select name="day">
<option value="1">1</option>
</select>
</td>
</tr>
<tr>
<td>Város</td>
<td><input name="city" type="text" /></td>
</tr>
<tr>
<td>Megye</td>
<td><input name="state" type="text" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Küldés" /></td>
</tr>
</table>
</form>
PHP kód:
<?php
$db = new PDO("mysql:dbname=mydb;host=myhost", "myuser", "mypass");
$dbh = $mysql->prepare("
UPDATE mytable
SET
name=?,
pass=?,
email=?,
birth=?,
city=?,
state=?,
gender=?
WHERE id=?"
);
$dbh->bindParam(1, $_POST["name"]);
$dbh->bindParam(2, sha1("token"+$_POST["pass"]));
$dbh->bindParam(3, $_POST["email"]);
$dbh->bindParam(4, $_POST["year"]."-".$_POST["month"]."-".$_POST["day"]);
$dbh->bindParam(5, $_POST["city"]);
$dbh->bindParam(6, $_POST["state"]);
$dbh->bindParam(6, $_POST["gender"]);
$dbh->bindParam(8, $_SESSION["userid"]);
$dbh->execute();
?>
Persze ebből még a nélkülözhetetlen ellenörzős hiányzik.
re: Form küldése sikertelen
Idézet:
kléni eredeti hozzászólása
Jófej voltam, és kijavítottam a kódodat (bár ebből te nem tanultál semmit):
HTML kód:
<form method="post" action="adatok.php">
<table>
<tr>
<td>Felhasználónév</td>
<td><input name="username" type="text" /></td>
</tr>
<tr>
<td>Jelszó</td>
<td><input name="password" type="password" /></td>
</tr>
<tr>
<td>Jelszó megerősítése</td>
<td><input name="password2" type="password" /></td>
</tr>
<tr>
<td>Email</td>
<td><input name="email" type="email" /></td>
</tr>
<tr>
<td>Nem</td>
<td>
<select name="gender">
<option value="1">Férfi</option>
<option value="2">Nő</select>
</select>
</td>
</tr>
<tr>
<td>Születési dátum</td>
<td>
<select name="year">
<option value="2000">2000</option>
</select>
<select name="month">
<option value="1">Január</option>
</select>
<select name="day">
<option value="1">1</option>
</select>
</td>
</tr>
<tr>
<td>Város</td>
<td><input name="city" type="text" /></td>
</tr>
<tr>
<td>Megye</td>
<td><input name="state" type="text" /></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="Küldés" /></td>
</tr>
</table>
</form>
PHP kód:
<?php
$db = new PDO("mysql:dbname=mydb;host=myhost", "myuser", "mypass");
$dbh = $mysql->prepare("
UPDATE mytable
SET
name=?,
pass=?,
email=?,
birth=?,
city=?,
state=?,
gender=?
WHERE id=?"
);
$dbh->bindParam(1, $_POST["name"]);
$dbh->bindParam(2, sha1("token"+$_POST["pass"]));
$dbh->bindParam(3, $_POST["email"]);
$dbh->bindParam(4, $_POST["year"]."-".$_POST["month"]."-".$_POST["day"]);
$dbh->bindParam(5, $_POST["city"]);
$dbh->bindParam(6, $_POST["state"]);
$dbh->bindParam(6, $_POST["gender"]);
$dbh->bindParam(8, $_SESSION["userid"]);
$dbh->execute();
?>
Persze ebből még a nélkülözhetetlen ellenörzős hiányzik.
Köszönöm, örök hála. Csak az számít, hogy működjön.
re: Form küldése sikertelen
Sajnos még most sem, jó, mi lehet vele?
re: Form küldése sikertelen
n+1 baja lehet. Nem véletlenül mondtam, hogy kezd az alapoktól. Most adhatok még egy kódot, amire nincs most sajnos időm, de lehet, az is rossz lenne. Nem teszteltem, amit mutattam, de jól kellene mennie, hiszen semmi bonyolultság nincs benne. Nézd meg, milyen hibaüzenetet kapsz, keress rá, az alapján meg tudod oldani. Vagy hátha valaki más tud még segíteni.