Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> problem z pętlą if + porównaniem stringów (php + JavaScript)
coryphen
post 27.10.2016, 13:38:21
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kapslokk
post 27.10.2016, 13:43:56
Post #2





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


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.

Ten post edytował kapslokk 27.10.2016, 13:45:36
Go to the top of the page
+Quote Post
coryphen
post 27.10.2016, 17:00:23
Post #3





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2016

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
kapslokk
post 27.10.2016, 17:13:54
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


;]
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.

Ten post edytował kapslokk 27.10.2016, 17:14:09
Go to the top of the page
+Quote Post
coryphen
post 27.10.2016, 17:48:33
Post #5





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 27.10.2016

Ostrzeżenie: (0%)
-----


Świetnie, faktycznie wszystko się zgadza oneeyedsmiley02.png
Wielkie dzieki za szybkie rozwiązanie tematu! A ja przesiadam się na formularz laugh.gif
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 20.06.2025 - 20:33