Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Logowanie[/php]
Forum PHP.pl > Forum > Przedszkole
endriut
Kolejny dzien kolejne pytania

  1. <?php ob_start(); ?>
  2. <? 
  3. include_once 'common.php'; 
  4. include_once 'pol.php';
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11. if (isset($_POST['login'])) { 
  12. $login = $_POST['login']; 
  13. } else { 
  14. $login = $_SESSION['login']; 
  15. } 
  16. if (isset($_POST['haslo'])) { 
  17. $haslo = $_POST['haslo']; 
  18. } else { 
  19. $haslo = $_SESSION['haslo']; 
  20. }
  21.  
  22. if(!isset($login)) { 
  23. ?> 
  24. <HTML>
  25. <HEAD> 
  26. <STYLE type="text/css">
  27. <!--
  28. BODY, TABLE, FORM { font-size: 8pt; font-family: Verdana, Arial; text-decoration: none }
  29. SELECT, INPUT { font-size: 8pt; font-family: Courier, Arial; text-decoration: none }
  30. -->
  31. </STYLE>
  32. </HEAD> 
  33. <BODY>
  34. <fieldset><legend>Musisz Się Zalogować</legend></span><br />
  35. <small> Musisz sie zalogować aby mieć dostęp do strony</small>
  36. <FORM method="post" action="<?=$_SERVER['PHP_SELF']?>"> 
  37. <TABLE border="0" cellpadding="0" cellspacing="5"> 
  38. <TR> 
  39. <TD align="right">Login:</TD> 
  40. <TD> 
  41. <INPUT name="login" type="text" maxlength="100" size="25">
  42. </TD> 
  43. </TR> 
  44. <TR> 
  45. <TD align="right">Hasło:</TD> 
  46. <TD> 
  47. <INPUT name="haslo" type="password" maxlength="100" size="25"> 
  48. </TD> 
  49. </TR> 
  50. <TR> 
  51. <TD align="center" colspan="2"> 
  52. <INPUT type="submit" value="Zaloguj"> 
  53. </TD> 
  54. </TR> 
  55. </TABLE> 
  56. </FORM>
  57. </BODY> 
  58. </HTML>
  59. <?php 
  60. exit; 
  61. }
  62.  
  63. $_SESSION['login'] = $login; 
  64. $_SESSION['haslo'] = $haslo;
  65.  
  66. dbConnect("absolwenci"); 
  67.  
  68. $sql = "SELECT * FROM logow WHERE login = '$login' AND haslo = PASSWORD('$haslo')"; 
  69. $result = mysql_query($sql); 
  70. if (!$result) { 
  71. error('Błąd w zapytaniu SQL'); 
  72. }
  73.  
  74. if (mysql_num_rows($result) == 0) { 
  75. unset($_SESSION['login']); 
  76. unset($_SESSION['haslo']); 
  77. ?> 
  78. <HTML> 
  79. <HEAD> 
  80. <TITLE>Brak dostępu</TITLE>
  81. <STYLE type="text/css">
  82. <!--
  83. BODY { font-size: 8pt; font-family: Verdana, Arial; text-decoration: none }
  84. -->
  85. </STYLE>
  86. </HEAD> 
  87. <BODY> 
  88. <B>Brak dostępu</B>
  89. <P>Sprawdź czy poprawnie wpisałeś Login i Hasło</P> 
  90. <A href="javascript:history.go(-1)">powrót</A>
  91. </BODY> 
  92. </HTML> 
  93. <?php 
  94. exit; 
  95. }
  96.  
  97. $kto = mysql_result($result,0,'login');
  98. ?>
  99.  
  100. <?php ob_end_flush(); ?>
  101. <HTML> 
  102. <HEAD> 
  103. <TITLE>Strona zabezpieczona</TITLE> 
  104. </HEAD> 
  105. <BODY> 
  106. <P>Witaj, <?=$kto?>! Ta informacja jest poufna</P> 
  107. </BODY> 
  108. </HTML>



skrypt logowania
odrazu przenosi
do

  1. </STYLE>
  2. </HEAD> 
  3. <BODY> 
  4. <B>Brak dostępu</B>
  5. <P>Sprawdź czy poprawnie wpisałeś Login i Hasło</P> 
  6. <A href="javascript:history.go(-1)">powrót</A>
  7. </BODY> 
  8. </HTML> 
  9. <?php 
  10. exit; 
  11. }
  12. ?>


co jest
b_chmura
ponieważ żaden inny warunek oprócz:
if (mysql_num_rows($result) == 0)
nie jest spełniony...

popracuj trochę i logicznie poukładaj instrukcje if
endriut
własnie kombinuje i nic sad.gif

ktoś pomoże
Berkovits
Jestem poczatkujacy, ale z checia pomoge (jesli potrafie).
Nie rozumiem tego fragmentu:
  1. <small> Musisz sie zalogować aby mieć dostęp do strony</small>
  2. <FORM method="post" action="<?=$_SERVER['PHP_SELF']?>">
  3. <TABLE border="0" cellpadding="0" cellspacing="5">


php otrzyma polecenie: =$_SERVER['PHP_SELF'], ktore nie wiem, co mialoby znaczyc. Chyba raczej trzebaby zrobic:
  1. <FORM method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

Podejrzyj sobie zrodlo strony wygenerowanej przez ten skrypt, czy jest tak, jakbys chcial.
Choc z drugiej strony jesli wartosc action w <form> jest pusta, to chyba przekierowuje do skryptu, w ktorym jest formularz, wiec chyba jest OK (ale wtedy nie potrzeba zupelnie tej wstawki).

Tak a propos, wystrzegaj sie skroconego zapisu: <? skrypt ?> i uzywaj raczej <?php skrypt ?>. Ja kiedys napisalem strone i wszystko dzialalo, ale gdy przenosilem na inny serwer, musialem wszystko zmieniac, bo wyskakiwal blad (to chyba od ustawienia parsera php zalezy, czy dopuszcza skrocony zapis).

Nie znam uzywanych przez ciebie procedur komunikacji z baza danych (ucze sie PDO), ale jakos brakuje mi czegos w stylu mysql_connect(baza, login, haslo); Moze do tego jest dbConnect("absolwenci")...

Ponadto nie robilbym tak:
  1. <?php
  2. if (isset($_POST['login'])) { 
  3. $login = $_POST['login']; 
  4. } else { 
  5. $login = $_SESSION['login']; 
  6. }
  7. ?>

Na niektorych serwerach (np. na tym, z ktorym mam do czynienia) wyskoczylby blad, ze uzywasz zmiennej ($_SESSION['login']), ktorej nie ma. Lepiej zrobic by tak:
  1. <?php
  2. if (isset($_POST['login'])) $login = $_POST['login']; 
  3. else if (isset($_SESSION['login'])) $login = $_SESSION['login'];
  4. ?>


Jesli napisalem jakas nieprawde, prosze mnie poprawic - tez sie czegos naucze.
qqrq
Co znaczy komenda PASSWORD w zapytaniu:

  1. SELECT * FROM logow WHERE login = '$login' AND haslo = PASSWORD('$haslo')


Nie powinno aby być:


  1. SELECT * FROM logow WHERE login = '$login' AND haslo = '$haslo'


questionmark.gif
endriut
to zakodowana zmienna $haslo , nadal czy wprowadze jakies dane czy nie : Brak dostępu
Sprawdź czy poprawnie wpisałeś Login i Hasło
.radex
~Berkovits - <?= oznacza <?php echo

Albo to:

else if (isset($_SESSION['login'])) $login = $_SESSION['login'];

będzie, bo właśnie ją deklarujesz, po za tym jeśli wyskakują błędy starczy zrobić:

error_reporting(E_ALL ^ E_NOTICE);
endriut
błedy mi nie wyskakują żadne, juz nic nie wiem

Pomoże mi ktoś chociaz jakies nakierowanie małe no. Oto chodzi ze kiedys mi to chodzilo i juz nie wiem co jest :/
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.