Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z pętlą if + porównaniem stringów (php + JavaScript)
Forum PHP.pl > Forum > PHP
coryphen
Witam wszystkich chcących pomóc,

Mam problem z kodem: wszystko teoretycznie działa, ale problem jest z porównaniem (zawsze false).
Kod poniżej

  1. <?php
  2.  
  3. $andrzej = 'andrzej';
  4.  
  5. //username prompt
  6. //prompt
  7. function prompt1($prompt_msg1){
  8. echo("<script type='text/javascript'> var answer1 = prompt('".$prompt_msg1."'); </script>");
  9.  
  10. $answer1 = "<script type='text/javascript'> document.write(answer1); </script>";
  11. return($answer1);
  12. }
  13.  
  14. //program
  15. $prompt_msg1 = "Please enter your username.";
  16. $username = prompt1($prompt_msg1);
  17. if ($username == $andrzej ) {
  18. include 'buttons.php';
  19. }
  20.  
  21. else {
  22. include 'denied.php';
  23. }
  24.  
  25. ?>


Co ciekawe - po sprawdzeniu obie zmienne mają tą samą wartość i typ. Próbowałem przyrównania używając "==" i "===".
Czy ktoś ma jakiś pomysł co tu pomieszałem? wink.gif
Tak, wiem, że to średnia metoda autoryzacji, ale dopiero zaczynam zabawy z kodem, a projekt będzie dostępny dla niewielkiej liczby osób (5-7).
Z góry dzięki za wszystkie wskazówki.
kapslokk
Cytat
Co ciekawe - po sprawdzeniu obie zmienne mają tą samą wartość i typ


No to faktycznie ciekawe, bo jak na moje to
$andrzej ma wartosc 'andrzej', a $username - <script type='text/javascript'> document.write(answer1); </script>

Poczytaj o formularzach w PHP.

Poza tym if to nie pętla.
coryphen
No dobra, co do pętli to się zgodzę. Zatem problem jest z instrukcją warunkowąwink.gif

Ale co do wartości - jeśli dodam na końcu kodu:
  1. echo $username;

To wyjdzie mi wartość wklepana przez użytkownika: andrzej

Dla weryfikacji do kodu dodałem:
  1. $data = array($andrzej, $username);
  2.  
  3. foreach ($data as $value) {
  4. echo gettype($value), "\n";
  5. }
  6. echo "\"", $andrzej, "\"", "\n", "\"", $username, "\"";


I jako wynik dostaję:
string string "andrzej" "andrzej"

Więc obie wartości są stringami o dokładnie tej samej wartości.
kapslokk
;]
Wstaw sobie echo($username); i zajrzyj w źródło strony.

Kod PHP wykonuje się na serwerze - to co widzisz w przeglądarce to jego wynik. Czyli w momencie kiedy przeglądarka wywala prompt to tak naprawde skrypt PHP dawno skończył swoją robotę. Żeby połączyć JS z PHP musisz albo użyć ajaxa, albo po prostu wysłać formularz.
coryphen
Świetnie, faktycznie wszystko się zgadza oneeyedsmiley02.png
Wielkie dzieki za szybkie rozwiązanie tematu! A ja przesiadam się na formularz laugh.gif
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.