Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Logowanie, nie loguje użytkownika
Forum PHP.pl > Forum > Przedszkole
svmon
Witam wszystkich.
Skrypt logowanie:
  1. <?php
  2. /* Skrypt 0. 1 login.php
  3. Strona umożliwia zalogowanie się w witrynie */
  4.  
  5. // Dołączamy plik konfiguracyjny z procedurami obsługi błędów.
  6. require_once ('config.inc.php');
  7.  
  8. // Ustawiamy tytuł strony i dołączamy nagłówek HTML.
  9. $page_title = 'Logowanie';
  10. include ('header.html');
  11.  
  12. if (isset($_POST['submitted'])) { // Sprawdzamy, czy formularz został przesłany.
  13.   require_once ('mysql_connect.php'); // Łączymy się z bazą danych.
  14.  
  15.   // Sprawdzamy poprawność adresu email.
  16.   if (!empty($_POST['login'])) {
  17.    $ln = escape_data($_POST['login']);
  18.   } else {
  19.    echo '<P><FONT COLOR="red" SIZE="+1">Zapomiałeś podać loginu</FONT></P>';
  20.    $ln = FALSE;
  21.   }
  22.  
  23.   // Sprawdzamy poprawność hasła.
  24.   if (!empty($_POST['pass'])) {
  25.    $p = escape_data($_POST['pass']);
  26.   } else {
  27.    $p = FALSE;
  28.    echo '<P><FONT COLOR="red" size="+1">Zapomiałeś podać hasła!</FONT></P>';
  29.   }
  30.  
  31.   if ($ln && $p) { // Jeśli wszystko w porządku... 
  32.  
  33.    // Wysyłamy zapytanie do bazy danych.
  34.    $query = "SELECT id_user, login_user FROM users 
  35.    WHERE (login_user='$ln' AND pass_user=SHA('$p')) AND active_user IS NULL";
  36.    $result = mysql_query($query) or trigger_error("Zapytanie: $query\n<br />Błąd MySQL: " . mysql_error());
  37.  
  38.    if (@mysql_num_rows($result) == 1) { // Znaleziono pasujący rekord.
  39.  
  40.    // Rejestrujemy wartości i przekierowujemy użytkownika.
  41.    $row = mysql_fetch_array ($result, MYSQL_NUM);
  42.    mysql_free_result($result);
  43.    mysql_close(); // Zamykamy połączenie z bazą danych.
  44.    $_SESSION['login_user'] = $row[1];
  45.    $_SESSION['id_user'] = $row[0];
  46.  
  47.    // Zaczynamy definicję adresu URL.
  48.    $url = 'http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']);
  49.    // Sprawdzamy końcowy ukośnik.
  50.    if ((substr($url, -1) == '/') OR (substr($url, -1) == '')) {
  51.    $url = substr($url, 0, -1); // Odcinamy ukośnik.
  52.    }
  53.    // Dodajemy stronę.
  54.   $url .= '/index.php';
  55.  
  56.    ob_end_clean(); // Usuwamy bufor.
  57.    header("Location: $url");
  58.    exit(); // Kończymy działanie skryptu.
  59.  
  60.    } else { // Nie znaleziono pasującego rekordu
  61.    echo '<P><FON COLOR="red" SIZE="+1">Login i hasło nie pasują do przechowanych w bazie danych 
  62.    albo jeszcze nie uaktywniłeś swojego konta.</FONT></P>';
  63.    }
  64.  
  65.   } else { // Jeśli coś jest nie w porządku...
  66.    echo '<P><FONT COLOR="red" SIZE="+1">Spróbuj jeszcze raz.</FONT></P>';
  67.   }
  68.  
  69.   mysql_close(); // Zamykamy połączenie z bazą danych.
  70.  
  71. } // Koniec instrukcji warunkowej sprawdzającej, czy formularz został przesłany.
  72. ?>
  73.  
  74. <H1>Logowanie</H1>
  75. <P>Aby się zalogować, musisz zezwolić na przyjmowanie plików cookie.</P>
  76. <FORM ACTION="login.php" METHOD="post">
  77. <FIELDSET>
  78. <P><B>Adres e-mail: </B> <INPUT TYPE="text" NAME="login" SIZE="20" MAXLENGHT="40"
  79. VALUE="<?php if (isset($_POST['login'])) echo $_POST['login']; ?>" /></P>
  80. <P><B>Hasło:</B> <INPUT TYPE="password" NAME="pass" SIZE="20" MAXLENGHt="20" /></p>
  81. <DIV ALIGN="center"><INPUT TYPE="submit" NAME="submit" VALUE="Logowanie" /></DIV>
  82. <INPUT TYPE="hidden" NAME="submitted" VALUE="TRUE" />
  83. </FIELDSET>
  84. </FORM>
  85.  
  86. <?php // Dołaczamy stopkę HTML.
  87. include ('footer.html);
  88. ?>

Po zalogowaniu się, powinien być napis powitalny "Witaj, nazwa_loginu" i inne menu.


Ze względu na sporą ilość kodu, która może się przydać pozostałe skrypty daje w linkach.
index.php
footer.php
header.php

Poza tym jeśli przechodze, pomiędzy linkami, czasami generuje mi się taki błąd
Cytat
Fatal error: print_r() [<a href='ref.outcontrol'>ref.outcontrol</a>]: Cannot use output buffering in output buffering display handlers in /var/www/sites/yoyo.pl/c/l/testowniak/config.inc.php on line 23


A plik config.inc.php wygląda tak kliknij zobacz... Powinien on podczas pojawienia się błędu wysyłać wiadomość na skyrznke pocztową... niestety jedynie wyrzuca błędy na ekran.



Za wszelką pomoc z góry dzięki.
Pozdrawiam.
hiszpanespaniol
na moje niedoświdczone oko, zapomniałeś zainicjowac sesję:

  1. <?php
  2. $_SESSION['login_user'] = $row[1];
  3. $_SESSION['id_user'] = $row[0];
  4. ?>


edit:
przepraszam, jest w includowanym pliku.
.radex
Zamiast print_r użyj var_dump
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.