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 -

Kód: Vybrat vše

echo mysql_error();
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 -

Kód: Vybrat vše

echo mysql_error();
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 :D

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
ja rikal ze je to vsechno v poradku jen tomu proste vadilo ze v tabulce ma sloupec nazev e-mail staci dat pric tu pomlcku a uz to lita!! takze vam dekuju za rady a priste uz snad nebudu tak blbej!! :D :D :D