Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Skrypt logowania, nie działa pod IE i Operą
Forum PHP.pl > Forum > Przedszkole
lukash82
Witam. Zrobiłem prosty system lgowania do panelu admina na stronie tylko napotkałem dziwny problem. Logowanie nie działa pod IE i Operą. Działa pod FF, Safari i Chrome... Co może być przyczyną takiego dziwnego działania jeśli skrypt w PHP i tak jest wykonywany po stronie serwera...

Fragment formularza logowania:
  1. $rezultat=mysql_query("SELECT * FROM usery WHERE login='" . $user . "' AND pass='" . $haslo . "'") or die(mysql_error());
  2. if(@mysql_num_rows($rezultat))
  3. {
  4. $_SESSION['user'] = $user;
  5. header("location: main.php");
  6. }
  7. else
  8. {
  9. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  10. }


i plik main.php
  1. if(!isset($_SESSION['user'])){
  2. header("location: index.php");
  3. }
  4. else{
  5. echo "zalogowany";
  6. }


To, że coś nie działa pod IEsyfem to mogę zrozumieć, ale pod Operą... Jeśli wiecie jak to obejść to proszę o jakieś podpowiedzi. Pozdrawiam, Łukasz
Pawel_W
Cytat
Fragment formularza logowania:


ja tu żadnego formularza nie widzę...
lukash82
Chodziło ogólnie o plik, gdzie znajduje się formularz... wiadomo, że chodzi o inputy... Jeszcze raz posyłam tym razem cały formularz:

  1. <?php
  2.  
  3. $login=$_POST['login'];
  4. if($login)
  5. {
  6.  
  7. $user=$_POST['user'];
  8. $haslo=md5($_POST['pass']);
  9.  
  10. include ("polaczenie.php");
  11.  
  12. $rezultat=mysql_query("SELECT * FROM usery WHERE login='" . $user . "' AND pass='" . $haslo . "'") or die(mysql_error());
  13. if(@mysql_num_rows($rezultat))
  14. {
  15. $_SESSION['user'] = $user;
  16. header("location: main.php");
  17. }
  18. else
  19. {
  20. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  21. }
  22. }
  23. ?>
  24. <form name="form" method="post" action="<? echo $PHP_SELF; ?>">
  25. <table class="logowanie-tab">
  26. <tr>
  27. <td class="title" colspan="2">Logowanie</td>
  28. </tr>
  29. <tr>
  30. <td class="first">Użytkownik: </td>
  31. <td class="second"><input name="user" class="one-line" type="text" /></td>
  32. </tr>
  33. <tr>
  34. <td class="first">Hasło: </td>
  35. <td class="second"><input name="pass" class="one-line" type="password" /></td>
  36. </tr>
  37. <tr>
  38. <td colspan="2" class="buttons">
  39. <input src="images/bt-loguj.gif" class="send" type="image" name="login" value="Logowanie"/>
  40. </td>
  41. </tr>
  42. </table>
  43. </form>
darko
Masz włączone short_tagi, że wystarczy Ci <form name="form" method="post" action="<? echo $PHP_SELF; ?>"> zamiast <form name="form" method="post" action="<?php echo $PHP_SELF; ?>">

Napisz jeszcze co znaczy, że nie działa, nie wysyła, widzisz pustą stronę? Włącz error_reporting E_ALL i display_errors 1
// edit
i usuń tłumienie błędów.

// edit2
nie podoba mi się to:
$rezultat = mysql_query("SELECT * FROM usery WHERE login='" . $user . "' AND pass='" . $haslo . "'") or die(mysql_error());

zamień na:
  1. $rezultat = mysql_query("SELECT * FROM usery WHERE login='" . $user . "' AND pass='" . $haslo . "'");
  2. if(!$rezultat) {
  3. }

Walian
  1. $_SESSION['user'] = $user;
  2. header("location: main.php");


Na końcu dopisz jeszcze:


No i nie masz w skrypcie zakończenia buforowania, mianowicie:


Czy to coś da - nie jestem pewien, opisz lepiej swój problem to może ktoś jeszcze wpadnie na jakiś pomysł.
lukash82
Witam ponownie, wyłączyłem maskowanie błędów, włączyłem error_reporting i cisza... nie działa dalej...:/ Ale chyba wiem gdzie jest błąd... tylko nie mam zbytnio pomysłu żeby go rozwiązać...

Nie wiem jak to możliwe, ale jak zrobiłem echo tej zmiennej to IE i Opera nic w nich nie widzą i dlatego skrypt wogóle nie wykonuje tego co jest w środku
  1. echo $login=$_POST['login'];
  2. if($login)
  3. {
  4.  
  5. }


Może to przez to, że guzik wysyłania jest obrazkowy...
Armstrong
wypisz całą tablicę POST
Blame
Możesz zamiast image zrobić zwykły submit i go ostylować w CSS. Z tego co wiem to właśnie image sprawia problemy w niektórych przeglądarkach.
blooregard
~Blame ma rację.

Wszystkie pomysły na poprawę sytuacji po stronie PHP (serwera) są pozbawione sensu, bo przeglądarka nie ma tu nic do rzeczy.
Dodaj zdażenie
  1. onclick="document.forms[0].submit(); return false;"

na tym buttonie, bo problem leży po stronie klienta, a nie serwera (PHP).

Albo tak, jak sugeruje ~Blame, daj zwykłego submita.
lukash82
Witam ponownie. Przerobiłem przycisk na zwykły button i ostylowałem go w CSS i działa już teraz we wszystkich przeglądarkach;) Jednak najprostsze rozwiązania chyba są najlepsze...

Dzięki za pomoc, pozdrawiam, Ł
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.