Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem ze zmienną z formularza
Forum PHP.pl > Forum > Przedszkole
maulus
  1. <form action='index.php' method='post'>
  2.  
  3. <input type='text' name='pass' value='' />
  4. <input type=submit>
  5. </form>
  6.  
  7. <?php
  8.  
  9. $haslo=$_POST[pass];
  10. if($haslo == "root" )
  11. {
  12. echo "prawda";
  13. }
  14. else
  15. {
  16. echo"falsz<br>";
  17. echo"$haslo<br>";
  18. echo"$login<br>";
  19. }
  20. ?>


mam taki kodzik w poli text wpisuje
1 == 1 or 1==1 or $pass

i dlaczego wyrzuca mi fałsz zamiast prawdy questionmark.gif

btw. nie że bym chciał gdzieś wejść tylko zabezpieczenia moich własnych skryptów
Najki
Trochę nie do końca rozumiem. Jeśli wpiszesz w formularzu "root" to zadziała dobrze. Jeśli natomiast to co napisałeś ("1 == 1 or 1==1 or $pass") ma być podmienionym warunkiem z instrukcji warunkowej (if/else) to jest to bez sensu, bo:
- 1 zawsze jest równe 1
- podwoiłeś ten sam warunek (1==1 i 1 == 1 to to samo)
- jeśli na serwerze register_globals ustawione jest na Off (a zazwyczaj tak jest) to do pola z formularza nie odwołasz się przez $pass, a jedynie przez $_POST['pass']
- jeśli warunkiem instrukcji warunkowej jest sama nazwa zmiennej to instrukcja ta sprawdza czy zmienna $pass została ustawiona, wtedy wyjdzie "prawda" bez względu na to co wpisze w formularzu użytkownik (jeżeli coś wpisze)
dr_bonzo
Rozumiem to tak: do inputa z haslem wpisujesz "1 == 1 or 1==1 or $pass"?
Jeslli tak to sktyp dziala dobrze: porownuje ($haslo == "root")
czyli
("1 == 1 or 1==1 or $pass" == "root" )
reszta jest chyba jasna?
Ociu
  1. <form action='index.php' method='post'>
  2.  
  3. <input type='text' name='pass' value='' />
  4. <input type=submit>
  5. </form>
  6.  
  7. <?php
  8. $password = 'root';
  9. $haslo = $_POST['pass'];
  10.  
  11. if($haslo == $password )
  12. {
  13. echo "prawda";
  14. }
  15. else
  16. {
  17. echo "falsz<br>";
  18. echo $haslo."<br>";
  19. }
  20. ?>
maulus
Cytat(dr_bonzo @ 2005-10-25 19:56:10)
Rozumiem to tak: do inputa z haslem wpisujesz "1 == 1 or 1==1 or $pass"?
Jeslli tak to sktyp dziala dobrze: porownuje ($haslo ==  "root")
czyli
("1 == 1 or 1==1 or $pass" ==  "root" )
reszta jest chyba jasna?

no dobra a da się zrobić coś takiego :

  1. <?php
  2.  
  3. if(" 1==1" or $pass == "root" )
  4.  
  5. ?>


haslo z input będzie się równać:
1==1 or $pass

no i wtedy nie powinno dać prawdy questionmark.gif
dr_bonzo
Dopoki nie uzyjesz eval() na danych z formularza to nie potraktuje ci tych danych jak KOD php tylko jako string(ew. int, float).
Czyli
  1. <?php
  2. if ( $haslo == 'tajne haslo' )
  3. {
  4. //...
  5. }
  6. ?>

wpusci cie tylko gdy w formularzu wpiszesz tajne haslo.
Takie cos nic ci nie popsuje w kodzie: TRUE OR $haslo bo to bedzie STRING, lancuch znakow, a nie kod php (po podstawieniu za $haslo:
  1. <?php
  2. if ( "TRUE OR $haslo" == 'tajne haslo' )....
  3. ?>
.
Juz jasne?
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.