Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Skrypt logowania (w szablonie)
Forum PHP.pl > Forum > Przedszkole
Lirdoner
Witam, problem mam taki

Skrypt logowania
  1. <form method="post" action="<? echo $PHP_SELF;?>" enctype="multipart/form-data">
  2. <b>Login:<b><br />
  3. <input type="text" name="login" maxlength="20" /><br />
  4. <b>Hasło:</b><br />
  5. <input type="password" name="haslo" maxlength="25"/><br /><br />
  6. <input type="submit" class="button" value="Zaloguj" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br /><br />
  7. </form>

  1. <?php
  2. // 1 linijka sprawdza czy jest login i haslo (jesli tego by nie bylo wyskakiwalo by nie ma takiego loginu)
  3. if (isset($_POST['login']) && isset($_POST['haslo'])){
  4. $login = mysql_real_escape_string(trim($_POST['login'])); // z loginu usuwamy spacje
  5. $haslo = md5($_POST['haslo']); //hasło kodujemy w MD5
  6. $loguj = mysql_query ("select Nick,Haslo from nauczyciele where Nick='$login' and Haslo='$haslo'");//pobranie z bazy loginu i hasła wpisanego w formularzu
  7. if(mysql_num_rows($loguj)==0)// sprawdzenie czy dany użytkownik istnieje w bazie
  8. {
  9. echo'<center> Podany login i haslo jest błędne</center>'; // jeżeli nie istnieje taki użytkownik to wyświetla błšd
  10. }
  11. else
  12. {
  13. $_SESSION['zalogowany'] = $_POST['login']; // jeżeli istnieje taki użytkownik w bazie
  14. echo "elo";
  15. }}
  16. ?>


Wszystko fajnie tylko że instukcja po zalogowaniu wykonuje się pod logowaniem, da się zrobić tak żeby po zalogowaniu usunąć formularz?
Blame
Formularz logowania umieszczasz w else dla tego if'a:
  1. if (isset($_POST['login']) && isset($_POST['haslo'])){
Lirdoner
Dzięki + leci, teraz mam jeszcze jeden problem
Otóż skrypt nie pamięta, że user jest zalogowany przez co przy odświeżeniu strony znowu pokazuje się formularz, jak temu zaradzić?
Wicepsik
Najlepiej zrób tak

  1. if (isset($_POST['login']) && isset($_POST['haslo'])){
  2. // twój kod z 1 posta
  3. }
  4.  
  5. if(isset($_SESSION['zalogowany']))
  6. {
  7. // formularz logowania
  8. }


Jak trzymasz formularz w pierwszej instrukcji warunkowej to po wpisaniu złych danych i wysłaniu formularza on zniknie, a pojawi się dopiero po odświeżeniu strony.

korey
tez miałem z tym problem.. smile.gif w pliku php ktory laduje grafike dałem na początek
  1. <?php
  2. $log = $_SESSION['login'];
  3. $pass = $_SESSION['haslo'];
  4. ?>


W skrypcie który mnie loguje ustawiłem ze gdy jestem zalogowany powstaje mi sesja.. ;p
np:
w miejscu gdzie masz "echo 'elo'; "

dopisałbym:
nylko musiałbyś dopasować sobie zmienne:
  1. $_SESSION['login'] = $log;
  2. $_SESSION['haslo'] = $pass;
Lirdoner
Hmm... mógłby ktoś zedytować kod? Plusy rozdam po rozwiązaniu problemu winksmiley.jpg
  1. <?php
  2. if (isset($_POST['login']) && isset($_POST['haslo'])){
  3. $login = mysql_real_escape_string(trim($_POST['login']));
  4. $haslo = md5($_POST['haslo']);
  5. $loguj = mysql_query ("select Nick,Haslo from nauczyciele where Nick='$login' and Haslo='$haslo'");
  6. if(mysql_num_rows($loguj)==0)
  7. {
  8. echo'<center> Podany login i haslo jest błędne<br><a href="index.php">Powrot</a></center>';
  9. }
  10. else
  11. {
  12. $_SESSION['zalogowany'] = $_POST['login'];
  13. echo "elo";
  14. }}
  15. else {
  16. echo "<form method='post' action='$PHP_SELF' enctype='multipart/form-data'>";
  17. echo "<center>";
  18. echo "<b>Login:<b><br />";
  19. echo "<input type='text' name='login' maxlength='20' /><br />";
  20. echo "<b>Hasło:</b><br />";
  21. echo "<input type='password' name='haslo' maxlength='25' /><br /><br />";
  22. echo "<input type='submit' class='button' value='Zaloguj' style='font-size: 10pt; font-family: Tahoma; font-weight: bold' />";
  23. echo "</center></form>";
  24. }
  25. ?>

Byłbym bardzo wdzięczny smile.gif
Wicepsik
  1. if (isset($_POST['login']) && isset($_POST['haslo'])){
  2. $login = mysql_real_escape_string(trim($_POST['login']));
  3. $haslo = md5($_POST['haslo']);
  4. $loguj = mysql_query ("select Nick,Haslo from nauczyciele where Nick='$login' and Haslo='$haslo'");
  5. if(mysql_num_rows($loguj)==0)
  6. {
  7. echo'<center> Podany login i haslo jest błędne<br><a href="index.php">Powrot</a></center>';
  8. }
  9. else
  10. {
  11. $_SESSION['zalogowany'] = $_POST['login'];
  12. echo "elo";
  13. }
  14. }
  15.  
  16. if(isset($_SESSION['zalogowany'])){
  17.  
  18. echo '<form method="post" action="'.$_SERVER['$PHP_SELF'].'" enctype="multipart/form-data">
  19. <center>
  20. <b>Login:<b><br />
  21. <input type="text" name="login" maxlength="20" /><br />
  22. <b>Hasło:</b><br />
  23. <input type="password" name="haslo" maxlength="25" /><br /><br />
  24. <input type="submit" class="button" value="Zaloguj" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" />
  25. </center></form>';
  26.  
  27. }
Lirdoner
Wyskakuje błąd
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\PHP\zapisy.php:9) in C:\xampp\htdocs\PHP\Includes\logowanie.php on line 2
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.