Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Problem ze skryptem logowania w PHP i SQL

#1
Problem ze skryptem logowania w PHP i SQL
Witam!

Możliwe, że to proste pytanie z prostą odpowiedzią - jednak nie dla mnie, jako że zacząłem przygodę z PHP przedwczoraj.
 
Przygotowałem skrypt rejestracji, wszystko gra. Strona normalnie łączy się z db, wszystko przebiega pomyślnie. Kod jest "zrozumiały" dla interpretera, nie wywala żadnych błędów, jednak mimo zapisanego rekordu w mojej bazie danych, podczas logowania wyrzuca mi zawsze błąd, który wpisałem w kod w przypadku kiedy dane podane są niezgodne z danymi w db. 

Wkurzyłem się i już nawet użyłem skryptu kropla w kroplę skopiowanego z jednego z portali, który działa według dziesiątek internautów, wykonałem wszystkie te same kroki, wszystko funkcjonuje jak u mnie.. ale pisze, że wg SQL dane są niezgodne. 

Załączam kod poniżej. Jakieś pomysły? Dodam, że w phpMyAdmin zapytanie o takiego użytkownika zwraca pozytywną odpowiedź.

Kod PHP:
<?php session_start();

$servername "*******";
$username "*********";
$password "********";
$dbname "********";

// Tworzenie połączenia
$conn mysqli_connect($servername$username$password$dbname);

// Weryfikacja
if (!$conn) {
    die("Blad polaczenia: " mysqli_connect_error());
}
echo 
"Polaczenie zakonczone sukcesem";

    /* jeżeli nie wypełniono formularza - to znaczy nie istnieje zmienna login, hasło i sesja auth
     * to wyświetl formularz logowania
     */
    if (!isset($_POST['login']) && !isset($_POST['password']) && $_SESSION['auth'] == FALSE) {
  ?>
  
      <form name="form-logowanie" action="test.php" method="post">
          Login: <input type="text" name="login"><br>
          Hasło: <input type="password" name="password">
          <input type="submit" name="zaloguj" value="Zaloguj">
      </form>
  
  <?php
  
}
    /* jeżeli istnieje zmienna login oraz password i sesja z autoryzacją użytkownika jest FALSE to wykonaj
     * skrypt logowania
     */
    elseif (isset($_POST['login']) && isset($_POST['password']) && $_SESSION['auth'] == FALSE) {
      
        
// jeżeli pole z loginem i hasłem nie jest puste      
        if (!empty($_POST['login']) && !empty($_POST['password'])) {
          
        
// dodaje znaki unikowe dla potrzeb poleceń SQL
        $login mysql_real_escape_string($_POST['login']);
        $password mysql_real_escape_string($_POST['password']);
        
        
// szyfruję wpisane hasło za pomocą funkcji md5()
        $password md5($password);
        
        
/* zapytanie do bazy danych
         * mysql_num_rows - sprawdzam ile wierszy odpowiada zapytaniu mysql_query
         * mysql_query - pobierz wszystkie dane z tabeli user gdzie login i hasło odpowiadają wpisanym danym
         */
        $sql mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `login` = '$login' AND `password` = '$password'"));
        
            
// jeżeli powyższe zapytanie zwraca 1, to znaczy, że dane zostały wpisane poprawnie i rejestruję sesję
            if ($sql == 1) {
              
                
// zmienne sesysje user (z loginem zalogowanego użytkownika) oraz sesja autoryzacyjna ustawiona na TRUE
                $_SESSION['user'] = $login;
                $_SESSION['auth'] = TRUE;
                
                
//przekierwuję użytkownika na stronę z ukrytymi informacjami
                echo '<meta http-equiv="refresh" content="1; URL=hide.php">';
                echo '<p style="padding-top:10px;"><strong>Proszę czekać...</strong><br>trwa logowanie i wczytywanie danych<p></p>';
            }
            
            
// jeżeli zapytanie nie zwróci 1, to wyświetlam komunikat o błędzie podczas logowania
            else {
                echo '<p style="padding-top:10px;color:red" ;="">Błąd podczas logowania do systemudfadsfdsafdsfasdfsdfsdfdsas<br>';
                echo '<a href="index.php" style="">Wróć do formularza</a></p>';
            }
        }
        
        
// jeżeli pole login lub hasło nie zostało uzupełnione wyświetlam błąd
        else {
            echo '<p style="padding-top:10px;color:red" ;="">Błąd podczas logowania do systemu<br>';
            echo '<a href="index.php" style="">Wróć do formularza</a></p>'   
        
}
    }
 ?>

// Do zamykania kodu PHP proszę używać znaczników
Kod:
[php][/php]
// Szachista
 System operacyjny: macos Przeglądarka: chrome
#2
RE: Problem ze skryptem logowania w PHP i SQL
Witam, mieszasz funkcje z przedrostkiem mysql i mysqli. Może pobierz wiersz z bazy danych i wypisz, aby móc sprawdzić, gdzie i czemu występuje jakaś różnica.
 System operacyjny: linux_ubuntu Przeglądarka: firefox
#3
RE: Problem ze skryptem logowania w PHP i SQL
Cześć!

Zrobiłem już logowanie do serwera i db przez oddzielny plik ze skryptem, przy użyciu mysql, żeby nie mieszać.

Rejestracja mi działa, łączy się w ten sam sposób i wykorzystuje tą samą funkcję, która porównuje dane wprowadzone z tymi dostępnymi w db.

Wpis w bazie danych ma kilka "podpunktów" więcej (nie wiem jak to nazwać fachowo, przepraszam). Chodzi o to, że podczas rejestracji udostępniane są również dane takie jak e-mail, krótki opis itd. Czy to może mieć na to wpływ?

Kod PHP:
<?php session_start();
      require_once(
'db.php');
?>
<html>
<head>
<title>R_15_01</title>
</head>
<body>
<?php

    
/* jeżeli nie wypełniono formularza - to znaczy nie istnieje zmienna login, hasło i sesja auth
     * to wyświetl formularz logowania
     */
    
if (!isset($_POST['imie']) && !isset($_POST['nazwisko']) && !isset($_POST['haslo']) && $_SESSION['auth'] == FALSE) {
?>  
           <form name="form-logowanie" action="test.php" method="post">
          Imie: <input type="text" name="imie"><br>
          Nazwisko: <input type="text" name="nazwisko">
          Hasło: <input type="password" name="haslo">
          <input type="submit" name="zaloguj" value="Zaloguj">
          </form>;
  <?php
  
}
    
/* jeżeli istnieje zmienna login oraz password i sesja z autoryzacją użytkownika jest FALSE to wykonaj
     * skrypt logowania
     */
    
elseif (isset($_POST['imie']) && isset($_POST['nazwisko']) && isset($_POST['haslo']) && $_SESSION['auth'] == FALSE) {
      
        
// jeżeli pole z loginem i hasłem nie jest puste      
        
if (!empty($_POST['imie']) && !empty($_POST['nazwisko']) && !empty($_POST['haslo'])) {
         
        
// dodaje znaki unikowe dla potrzeb poleceń SQL
        
$imie mysql_real_escape_string($_POST['imie']);
        
$nazwisko mysql_real_escape_string($_POST['nazwisko']);
        
$haslo mysql_real_escape_string($_POST['haslo']);
        
$haslo md5($haslo); 
        
        
        
$sql mysql_num_rows(mysql_query("SELECT * FROM `user` WHERE `imie` = '$imie' AND `nazwisko` = '$nazwisko' AND `haslo` = '$haslo'"));
        
            
            if (
$sql == 1) {
              
                
                
$_SESSION['user'] = $imie;
                
$_SESSION['auth'] = TRUE;
                
               
                echo 
'<meta http-equiv="refresh" content="1; URL=hide.php">';
                echo 
'<p style="padding-top:10px;"><strong>Proszę czekać...</strong><br>trwa logowanie i wczytywanie danych<p></p>';
            }
            
            
            else {
                echo 
'<p style="padding-top:10px;color:red" ;="">Błąd podczas logowania do systemu 01<br>';
                echo 
$sql;
                echo 
$_POST['imie'].$_POST['nazwisko'].$_POST['haslo'];
                echo 
$haslo;
                echo 
'<a href="index.php" style="">Wróć do formularza</a></p>';
            }
        }
        
        
        else {
            echo 
'<p style="padding-top:10px;color:red" ;="">Blad podczas logowania do systemu 02<br>';
            echo 
$_POST['imie'];
            echo 
$_POST['nazwisko'];
            echo 
'<a href="index.php" style="">Wroc do formularza</a></p>';    
        }
    }
 
?>
</body>
</html> 

Zauważyłem też, że nie zmienna "$sql" nie zwraca żadnej wartości po wywołaniu jej przez echo. Coś to znaczy?
 System operacyjny: macos Przeglądarka: chrome
#4
RE: Problem ze skryptem logowania w PHP i SQL
Dlaczego nie korzystasz z PDO?
Każdy dzień bez forum to dzień stracony.
 System operacyjny: windows_eight Przeglądarka: chrome
Programy: Polecane / Nowe / Inne




Podobne wątki (Problem ze skryptem logowania w PHP i SQL)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  [SQL]procedura zliczania czasu CTRL85 0 12978 17.02.2018, 12:58
Ostatni post: CTRL85
  SQL zapisanie w rekordzie nazwy zalogowanego użytkownika karlos1323 11 5035 30.12.2017, 11:08
Ostatni post: koneton
  Tutoriale: Tworzenie raportów z wykorzystaniem SQL. Cixi 3 10943 29.03.2017, 08:23
Ostatni post: koneton

Skocz do: