Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Formularz praw dostępu
Forum PHP.pl > Forum > PHP
Strarus
siemanko smile.gif
Dość szybko pojawił się kolejny problem, którego nie mogę rozwiązać. Otóż zrobiłem formularz, w którym można nadać prawa danemu użytkownikowi. Oto on:
  1. <?php
  2.   if(isset($_SESSION['zalogowany'])) {
  3.     include ('db_connect.inc.php');
  4.     $sql = mysql_query("SELECT COUNT( * ) `ilosc_userow` FROM `tbl_user` WHERE `login`='". $_SESSION["login"] ."'");
  5.     $row = mysql_fetch_assoc($sql);
  6.     if($row['ilosc_userow'] > 0 ) {      
  7.    if(isset($_POST['login']) && !empty($_POST['login'])) {
  8.   $login = ($_POST['login']);
  9.   echo($login);
  10.   $sql = "INSERT INTO `tbl_user` SET `login`='$login' and `ilosc_userow`='1'";
  11.     if (@mysql_query($sql)) {
  12.       echo '<p>Dodano prawa userowi.</p>';
  13.     } else {
  14.       echo '<p>Bład podczas dodawania praw: ' .
  15.           mysql_error() . '</p>';
  16.     }
  17. } else {
  18.   echo '<strong>Nadaj prawa admina userowi</strong><br/>
  19.   <form action="prawa.php" method="post">
  20. <table border="0">
  21.  <tr>
  22.   <td>Login:</td>
  23.   <td><input type="text" name="login" maxlength="12"/></td>
  24.  </tr>
  25. </table>
  26. <input type="submit" value="Dodaj!" />
  27. </form>';
  28. }
  29. } else {
  30.   echo 'Nie masz wystarczających uprawnień';
  31. }
  32. } else {
  33.   echo '<a href="login.php">Zaloguj!</a>';
  34. }
  35. ?>

Po wpisaniu jakiegoś nicku pojawia się napis dodano (sprawdzałem zawartość zmiennych - poprawna), a w bazie pojawia się tylko cyfra 1 w polu nick... Co robię źle?


sorki, że dwa razy ten sam temat ale coś mi z łączem się stało i nie widziałem czy się dodał ten pierwszy - jeśli można prosić moderatorów, to nich usuną ten temat smile.gif
outsider
Kod
$sql = "INSERT INTO `tbl_user` SET `login`='$login' and `ilosc_userow`='1'";


Co to jest ? SET przy INSERT ? SET tylko przy UPDATE smile.gif Rozumiem ze chcesz nadawac prawa juz istniejacemu uzytkownikowi. I gdzie WHERE ? Wszystkie rekordy maja byc zmienione ? Wedlug mnie cale zapytanie powinno wygladac tak (nie wiem do konca jak ma to u Ciebie dzialac)

Kod
$sql = "UPDATE `tbl_user` SET `ilosc_userow`='1' WHERE `login`='$login' ";


Zapoznaj sie: http://www.w3schools.com/php/php_mysql_update.asp 

Przy UPDATE nie ma AND, sa tylko przecinki(AND tylko po WHERE)
decha-design
Tak na przyszłość ... korzystaj z takiej funkcji jak mysql_error() ... unikniesz wielu problemów ...

  1. <?php
  2. $sql = "UPDATE `tbl_user` SET `ilosc_userow`='1' WHERE `login`='$login' ";
  3. $query = mysql_query($sql) or die(mysql_error());
  4. ?>


i mysql ci wszystko wypisze sam ... jaki masz błąd =)
outsider
decha-design, tak bylo by najlatwiej i najszybciej. Tylko gdy to uzywamy to tylko przy testowaniu, bo haker moze to wykorzystac, chociaz jesli sa dobre zabezpieczenia...
RubiX
haker haker ... a co Ty robisz za stronę że niby mają się nią hakerzy interesować ? Panel dla inteligo czy mbanku ? smile.gif
decha-design
@RubiX ... spokojnie =)

To jak się tak boisz o hakerów, to zapisuj sobie do plików .txt i po sprawie =)
outsider
RubiX, a chocby przed kumplem smile.gif Akurat jednego mam, na szczescie. Wiec przynajmniej bede mial strone zabezpieczona.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.