Stránka 1 z 1
PHP - prosim o kontrolu uz si nevim rady
Napsal: pát 10. lis 2006, 19:08
od Dj´ Frodo
Zdravycko!!! delam o uz nejakou chvili ale stimhle sem se jeste nesetkal. podivejte se prosim na tento kod jestli tam ennajdete enjakou chybku proste ja uz nefim. cumim do toho uz hodinu a ne a ne na nic prijit. proste mi to v db nic nezmeni a vsechny nazvy tabulek sedi a sou poradku.
Kód: Vybrat vše
if(isset($_POST["update"]))
{
$n_id = $_SESSION["id_user"];
$n_login = $_POST["n_login"];
$n_heslo = $_POST["n_heslo"];
$n_jmeno = $_POST["n_jmeno"];
$n_email = $_POST["n_email"];
$sql = "update users set jmeno = '$n_jmeno', login = '$n_login', heslo = '$n_heslo', e-mail = '$n_email' where id = $n_id";
$result = mysql_query($sql);
if (!$result) {
alert2("Uživatelské údaje nebyly upraveny!");
}else {
alert("Uživatelské údaje byly úspěšně opraveny.");}
}
Napsal: pát 10. lis 2006, 19:26
od matajon
1) Alespon pri debuggingu vypisuj SQL Errory -
takze u tebe napriklad
Kód: Vybrat vše
$result = mysql_query($sql) or die(mysql_error();)
protoze si myslim ze chyba bude v tom "where id = $n_id" ... mely by tam byt apostrofy
2) jestli v tom nebude zadny error, tak si zkontroluj jestli ta vetev kodu v podmince IF probehne, dej nekam do te vetve kodu treba echo 'backora'; aby jsi videl jestli se ten kod opravdu vykona
3) z hlediska bezpectnosti neni vubec dobre vkladat do SQL dotazu primo data od uzivatele, koledujes si o nejaky utok pres SQL Injection ..... pravidlo "nikdy never uzivatelskemu vstupu"
Napsal: pát 10. lis 2006, 20:52
od Lamicz
Ukaz jeste kod zdrojoveho formulare v HTML, mam dojem, ze chyba bude logicka, ne syntakticka

Napsal: pát 10. lis 2006, 23:26
od Dj´ Frodo
matajon píše:1) Alespon pri debuggingu vypisuj SQL Errory -
takze u tebe napriklad
Kód: Vybrat vše
$result = mysql_query($sql) or die(mysql_error();)
protoze si myslim ze chyba bude v tom "where id = $n_id" ... mely by tam byt apostrofy
2) jestli v tom nebude zadny error, tak si zkontroluj jestli ta vetev kodu v podmince IF probehne, dej nekam do te vetve kodu treba echo 'backora'; aby jsi videl jestli se ten kod opravdu vykona. jinak to id v apostofech nepomaha to uz sem zkousel.
3) z hlediska bezpectnosti neni vubec dobre vkladat do SQL dotazu primo data od uzivatele, koledujes si o nejaky utok pres SQL Injection ..... pravidlo "nikdy never uzivatelskemu vstupu"
ok s tim erorem to zkusim ale if bezi!. kontrolu uz sem delal
Lamicz píše:Ukaz jeste kod zdrojoveho formulare v HTML, mam dojem, ze chyba bude logicka, ne syntakticka

no formular mam taky dobe ale ejstli cces tak ti ho klidne hodim.
Kód: Vybrat vše
<form method="post" action="index.php?page=users_edit">
<table align="center" style="width: 70%" cellspacing="0" cellpadding="0">
<tr>
<td>
<b>Pozice:</b>
</td>
<td><b>
<?php
$prava = $_SESSION["prava"];
if ($prava == "1") {
$pozice = "Admin";
} else {
if ($prava == "2") {
$pozice = "Administrátor";
} else {
$pozice = "Člen týmu";
}
}
echo $pozice;
?></b>
</td>
</tr>
<tr>
<td>
<b>Login:</b>
</td>
<td>
<input type="text" name="n_login" size="40" value="<?php echo $row["login"];?>"/>
</td>
</tr>
<tr>
<td>
<b>Heslo:</b>
</td>
<td>
<input type="text" name="n_heslo" size="40" value="<?php echo $row["heslo"];?>"/>
</td>
</tr>
<tr>
<td>
<b>Zobrazované jméno:</b>
</td>
<td>
<input type="text" name="n_jmeno" size="40" value="<?php echo $row["jmeno"];?>"/>
</td>
</tr>
<tr>
<td>
<b>Email:</b>
</td>
<td>
<input type="text" name="n_email" size="40" value="<?php echo $row["e-mail"];?>"/>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="update" value="Upravit" onclick="return confirm('Opravdu chcete změnit vaše údaje???')"/>
</td>
</tr>
</table>
</form>
Napsal: pát 10. lis 2006, 23:34
od Dj´ Frodo
tak stim erorem to vubec nefunguje hlásí to
Kód: Vybrat vše
Parse error: parse error in C:\apachefriends\xampp\htdocs\alkyone\tym\users_edit.php on line 20
Napsal: pát 10. lis 2006, 23:41
od matajon
Dj´ Frodo píše:tak stim erorem to vubec nefunguje hlásí to
Kód: Vybrat vše
Parse error: parse error in C:\apachefriends\xampp\htdocs\alkyone\tym\users_edit.php on line 20
no tak bez toho stredniku
Kód: Vybrat vše
$result = mysql_query($sql) or die(mysql_error());
Napsal: sob 11. lis 2006, 02:36
od Lamicz
No, ten form vypada dobre. kdyz se nic nedeje, tak nejpve zkontroluj, zda se spravne inicializovala ta SESSION $n_id. nech si ji vypsat. Protoze jinak je to jasny, tim ve WHERE by byla prazdna promenna.
Kdyz je to v poradku, tak pujdem dal

Napsal: sob 11. lis 2006, 11:12
od Dj´ Frodo