Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL]Logowanie + sesje + mysql, problem z logowaniem
einstein
post
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 28.09.2008

Ostrzeżenie: (0%)
-----


Witam napisałem skrypt logowanie oparty na mysql i na sesjach lecz się nie uruchamia(nie wywala błędów). Oto on:
Formularz logowania:
Kod
<?PHP
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    
    session_start();
    
    if(isset($_POST['username']) && isset($_POST['password']))
    {
        $username = $_POST['username'];
        $password = $_POST['password'];
        
        $db_connect = new mysqli('localhost' , 'usa' , 'haslo', 'engtest');
        
        if(mysqli_connect_errno())
        {
            echo 'POŁĄCZENIE Z BAZĄ DANYCH NIE POWIODŁO SIE: '.mysqli_connect_error();
            exit();
        }
        
        $zapytanie = 'select * from member'
                     ." where username='$username' "
                     ." and password=sha1('$password')";
                    
        $result = $db_connect->query($zapytanie);
        if($result->num_rows > 0)
        {
            $_SESSION['prawid_uzyt'] =$username;
        }
        $db_connect->close();
        
    }
    
    ?>
    
    <HTML>
    <BODY>
    <BR><BR><BR><BR><BR><BR><BR><BR><BR>
    <?php
    
    if(isset($_SESSION['prawid_uzyt']))
    {
        echo 'Użytkownik zalogowany jako: '.$_SESSION['prawid_uzyt'];
    }
    
    else
    {
        if(isset($username))
        {
            echo 'Zalogowanie niemożliwe';
        }
        
        else
        {
            echo 'Użytkownik niezalogowany
    ';
        }
    }
    
    
      echo '<form method="post" action ="member.php">';
      
      echo '<center><TABLE frame="vsides" width = 216>';
      echo '<TR><TD><center>';
      echo '&nbsp;<IMG SRC="img/log.gif" WIDTH="199" HEIGHT="28" BORDER="0" ALT="LOGOWANIE">&nbsp;';
      echo '</center></TD>';
      
      echo '<TABLE frame="vsides" width = 216>';
      echo '<TR><TD><B><center>LOGIN:</center> </B></TD>';
      echo '<TD><B><center><input type="text" name="username" size = 10></center> </B></TD></TR>';
      echo '<TR><TD><B><center>HASŁO:</center> </B></TD>';
      echo '<TD><center><INPUT TYPE="password" NAME="password" size = 10></center></TD></TR>';
      echo '</center></TABLE></form>';
      echo'<INPUT TYPE="submit" value="Loguj">';
    ?>
      
     </BODY>
    </HTML>


Skrypt sprawdzający sesje:
Kod
<?php
  error_reporting(E_ALL);
  ini_set('display_errors', 1);
  
  session_start();
  if(isset($_SESSION['prawid_uzyt']))
  {
      header("Location: http://localhost/.../.../admin_pan.html");    
  }
  else
  {
      header("Location: http://localhost/.../.../logon_root.php");
  }
  ?>


Baza:
Kod
create database engtest;
  use member;
  
  create table member
  (username varchar(64) not NULL,
  haslo varchar(64) not null,
  mail varchar(100) not null,
  primary key(username)
  );
  
  insert into member values
  ('jacek' , sha1('jacek') , 'mail');

Sytuacja wygląda tak ze wpisuje login i hasło i ponownie zostaje przelogowany do formularz logowania. Nie wiem co mam zrobić. Siedziałem nad tym kodem i nie znalazłem żadnego błędu możne macie jakieś sugestie?

Bede naprawdę wdzięczny za pomoc. Pozdrawiam.

Ten post edytował einstein 29.09.2008, 19:05:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
rodia
post
Post #2





Grupa: Zarejestrowani
Postów: 21
Pomógł: 5
Dołączył: 29.07.2008

Ostrzeżenie: (0%)
-----


Mowisz, ze jak sie logujesz to wyświetla i tak formularz logowania. No oczywiście przecież niezależnie od stanu zalogowania formularz jest zawsze wyświetlany w twoim kodzie, zobacz twoj kod:
Kod
   <?php
    
     if(isset($_SESSION['prawid_uzyt']))
     {
         echo 'Użytkownik zalogowany jako: '.$_SESSION['prawid_uzyt'];
     }
    
     else
     {
         if(isset($username))
         {
             echo 'Zalogowanie niemożliwe';
         }
        
         else
         {
             echo 'Użytkownik niezalogowany';
         }

     } // << TEN NAWIAS POWINIEN BYC DALEJ
    
    
       echo '<form method="post" action ="index.php">';
      
       echo '<center><TABLE frame="vsides" width = 216>';
       echo '<TR><TD><center>';
       echo '&nbsp;<IMG SRC="img/log.gif" WIDTH="199" HEIGHT="28" BORDER="0" ALT="LOGOWANIE">&nbsp;';
       echo '</center></TD>';
      
       echo '<TABLE frame="vsides" width = 216>';
       echo '<TR><TD><B><center>LOGIN:</center> </B></TD>';
       echo '<TD><B><center><input type="text" name="username" size = 10></center> </B></TD></TR>';
       echo '<TR><TD><B><center>HASŁO:</center> </B></TD>';
       echo '<TD><center><INPUT TYPE="password" NAME="password" size = 10></center></TD></TR>';
       echo '</center></TABLE></form>';
       echo'<INPUT TYPE="submit" value="Loguj">';

   // TUTAJ POWINIEN BYC TEN NAWIAS O KTORYM PISALEM WYZEJ

   ?>


Zauważ, że cały fragment wyświetlający formularz nie znajduje sie w klamrach {} poprzedniego warunku IF ani ELSE. W tym kodzie zaznaczylem ktory nawias trzeba przenieść w inne miejsce, żęby było dobrze.

Uruchomilem twoj kod u siebie i wprowadzilem tą zmianę o ktorej piszę wyżej i dziala tak, ze jak sie zaloguje to wyswietla sie komunikat "Użytkownik zalogowany jako:...." i formularz sie juz nie wyświetla. Rozumiem, że tak mialo byc
Aha, i ponieważ nie chcialo mi sie bazy tworzyć to do testow z twojego kodu wykroilem polaczenie z bazą i zastapilem sobie sprawdzeniem w kodzie php hasla i uzytkownika - pisze o tym zeby bylo wiadomo ze nie badalem poprawnosci kodu odpowiedzialnego za polaczenie z bazą

Ten post edytował rodia 30.09.2008, 21:06:03
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 10:28