Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Problem ze skryptem logowania
Forum PHP.pl > Forum > Przedszkole
tadek92
Witam!
Piszę właśnie skrypt logowania się użytkowników. Mam z nim pewien problem. Mianowicie, niezależnie od tego jakiego użytkownika chcę zalogować loguje się zawsze jeden i ten sam pierwszy użytkownik w bazie danych. Zupełnie nie mogę sobie poradzić z tym skryptem. Proszę o pomoc.
Kod
<?php
  if (isset($_POST['user_email']) and isset($_POST['user_password']) )
  
  {
  
  include("config.php");
      @mysql_connect ("$mysql_host", "$mysql_user", "$mysql_password") or
      die ("Nie można połączyć się z MySQL");
      @mysql_select_db ("$mysql_db") or
      die ("Nie można połączyć się z bazą $mysql_db");
      mysql_query("SET NAMES 'utf8'");
  
  $email=mysql_real_escape_string(trim($_POST['user_email']));
  
  $password=mysql_real_escape_string(trim($_POST['user_password']));
  
  if ($email!="" and $password!="")
  
  {
  
     $password = sha1(md5($password));
  
     $query="SELECT * FROM users WHERE user_email='$email' and user_password ='$password'";
  
     $temp=mysql_query($query) or die("<strong>Wystąpił błąd</strong>");
  
      $num=mysql_num_rows($temp);
  
     $temp=mysql_fetch_array($temp);
  
     $id=$temp['id'];
      
  
  
     if ($num==1)
  
     {
    
    $result = mysql_query ("SELECT * FROM users WHERE user_email='$email' and user_password ='$password'");
          if ($result && $record = mysql_fetch_assoc ($result))
          {
              foreach($record as $key => &$value) {$value = stripslashes($value);}
              $user_active = $record['user_active'];
              $user_email = $record['user_email'];
              $user_id = $record['user_id'];
              
          }
      
  if ($user_active == 0)
     {
     session_start();
     $_SESSION['sesja']="ok";
      $_SESSION['user_email'] = $user_email;
     $_SESSION['user_id'] = $user_id;
     header('Location: index.php?panel=ok');
            
      }
      else {
      echo"<strong>Błąd logowania!</strong><p>Nie jesteś aktywowany!
  Odbierz maila z linkiem aktywacyjnym.</p>";
      }
  
     }
  
     else echo ('<strong>Błąd logowania!</strong><p>Podales złe dane!
  Spróbuj zalogować się ponownie.</p>');
  
  }
  
  }
  
  else{
  
  ?>
  <form action="#" method="post">
  <fieldset>
  <div class="divform"><label>E-mail:</label> <input name="user_email" type="text" value="" /></div>
  <div class="divform"><label>Hasło:</label> <input name="user_password" type="password" value="" /></div>  
  <div class="divform"><label><?php echo "<a href=\"http://$domain/index.php?register=ok\">Zarejestruj się</a>"; ?></label><input type="submit" value="Zaloguj się" /></div>  
  </fieldset>
  </form>
  <?php
  
  }?>


Poradziłem już sobie z tym problemem. Mam jednak jeszcze jeden problem jak ustawić jedną sesję dla wszystkich subdomen?
erix
Cytat
jak ustawić jedną sesję dla wszystkich subdomen?

Było, poszukaj.
tadek92
Szukałem na forum i nie mogłem znaleźć, a problem z logowanie z nów wrócił. Teraz jak zaloguje się na danego użytkownika to a początku jest dobrze, a jak przełączę na inną podstronę to automatycznie zmienia mi użytkownika nie mam pojęcia dlaczego tak się dzieje.
erix
Cytat
to automatycznie zmienia mi użytkownika nie mam pojęcia dlaczego tak się dzieje.

Zmienia, czy wylogowuje?

Cytat
Szukałem na forum i nie mogłem znaleźć

Szukaj przez Google na forum (masz logo winksmiley.jpg), bo szukajka IPB nie odmienia polskiej fleksji, powinno coś być sesja subdomeny.
tadek92
Zmienia użytkownika na innego. A co do sesji to poszukam przez Google.

Tą dziwną sytuację z logowaniem możecie zobaczyć na tej stronie: http://webcreat.pl/

zalogujcie się tam jako ffupload@gmail.com haslo 1234.
Potem jak się wejdzie na stronę główną, a następnie na stronę wszyscy użytkownicy lub z powrotem do panelu to zmienia się użytkownik dlaczego się tak dzieje. Proszę o pomoc bo nie mogę sobie wogóle z tym poradzić.

O i jeszcze jedno spostrzeżenie jak zaloguję się na pierwszego użytkownika to wszystko w porządku.

sprawdźcie sami email oksi3w@gmail.com hasło haslo

Jak uzunąłem <?php session_start(); ?> ze strony index.php to wszystko w porządku ale musi być tam to wpisane bo tam też muszę gdzie nie gdzie sprawdzić czy sesja jest. Ale znów jak to zostawie to jak wejde na index.php ze strony panel.php, a potem z powrotem na strone panel.php to wartość sesji się zmienia i niewiem dlaczego.
Karen
Spróbuj przenieść session_start(); na początek pliku, powinno pomóc.
tadek92
Zmieniłem trochę plik login.php usunąłem z niego session_start(), a zostawiłem tylko w index.php,
ale nadal dzieje się to samo jak wejdę na stronę, która includuje plik user.php to wszystko się wali.
plik login.php
Kod
<?php
   if (isset($_POST['user_email']) and isset($_POST['user_password']) )
  
   {
  
   include("config.php");
       @mysql_connect ("$mysql_host", "$mysql_user", "$mysql_password") or
       die ("Nie można połączyć się z MySQL");
       @mysql_select_db ("$mysql_db") or
       die ("Nie można połączyć się z bazą $mysql_db");
       mysql_query("SET NAMES 'utf8'");
  
   $email=mysql_real_escape_string(trim($_POST['user_email']));
  
   $password=mysql_real_escape_string(trim($_POST['user_password']));
  
   if ($email!="" and $password!="")
  
   {
  
      $password = sha1(md5($password));
  
      $query="SELECT * FROM users WHERE user_email='$email' and user_password ='$password'";
  
      $temp=mysql_query($query) or die("<strong>Wystąpił błąd</strong>");
  
       $num=mysql_num_rows($temp);
  
      $temp=mysql_fetch_array($temp);
  
      $id=$temp['user_id'];
      
  
  
      if ($num==1)
  
      {
    
     $result = mysql_query ("SELECT * FROM users WHERE user_email='$email' and user_password ='$password'");
           if ($result && $record = mysql_fetch_assoc ($result))
           {
               foreach($record as $key => &$value) {$value = stripslashes($value);}
               $user_active = $record['user_active'];
               $user_email = $record['user_email'];
               $user_id = $record['user_id'];
              
           }
      
   if ($user_active == 0)
      {
      $_SESSION['sesja']="ok";
       $_SESSION['user_email'] = $user_email;
      $_SESSION['user_id'] = $user_id;
      header('Location: panel.php');
            
       }
       else {
       echo"<strong>Błąd logowania!</strong><p>Nie jesteś aktywowany!
   Odbierz maila z linkiem aktywacyjnym.</p>";
       }
  
      }
  
      else echo ('<strong>Błąd logowania!</strong><p>Podales złe dane!
   Spróbuj zalogować się ponownie.</p>');
  
   }
  
   }
  
   else{
  
   ?>
   <form action="#" method="post">
   <fieldset>
   <div class="divform"><label>E-mail:</label> <input name="user_email" type="text" value="" /></div>
   <div class="divform"><label>Hasło:</label> <input name="user_password" type="password" value="" /></div>
   <div class="divform"><label><?php echo "<a href=\"http://$domain/index.php?register=ok\">Zarejestruj się</a>"; ?></label><input type="submit" value="Zaloguj się" /></div>
   </fieldset>
   </form>
   <?php
  
   }?>


plik index.php
Kod
<?php session_start();
$_SESSION['user_id'] = $_SESSION['user_id'];
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
  <meta name="author" content="Ugly Templates - Free web templates - www.uglytemplates.com" />
  <meta name="keywords" content="wdsf" />
  <meta name="description" content="fasfasf" />
  <link rel="stylesheet" type="text/css" href="style.css"  media="screen,projection" />  
  <link rel="shortcut icon" href="favicon.ico" />  
  <title>safa</title>
  <link rel="stylesheet" href="css/lightbox.css" type="text/css" media="screen" />
  <script src="js/prototype.js" type="text/javascript"></script>
  <script src="js/scriptaculous.js?load=effects,builder" type="text/javascript"></script>
  <script src="js/lightbox.js" type="text/javascript"></script>
  <script type="text/javascript">
  <!--
  function displayWindow(url, width, height) {
        var Win = window.open(url,"displayWindow",'width=' + width + ',height=' + height +       ',resizable=0,scrollbars=yes,menubar=no, left=350,top=250' );
  }
  //-->
  </script>
  </head>
  <body>


<!----><div id="head">
       <div id="blackline"><div>
          <?php include("menu.php"); ?>
       </div></div>    

<!----></div> <!-- end head -->

<div id="greenback1"><div id="greenback2">    
<!----><div id="content"><div id="contentin">

      <form id="search" method="get" action=""><fieldset>
          <input id="searchtext" type="text" name="phrase" />
          <input id="searchimage" type="submit" value="Szukaj" />
      </fieldset></form> <!-- end search -->
      
       <div id="leftcol">
            <div id="logo">
            <h1><a href="#">Katalog</a></h1>
            <p>Katalog portfolio</p>
            </div>
          
            <div id="aboutme"><div>
            <h3>Najnowszy użytkownik</h3>
            <img src="aboutmephoto.gif" alt="Me" />
            <p><strong>Name:</strong> My name</p>
            <p><strong>Location: </strong>Paris</p>
            <p>Thanks for visiting my blog. I hope you will it interesting. "This and That and More of the Same" strives to show striking images along with intriguing human interest stories. The "Memories" blog displays images of family while "Why Ask For the Moon When We Have the Stars" is devoted to friends.</p>
            <p class="taright"><a class="arrow" href="#">View my complete profile</a></p>
            </div></div> <!-- end aboutme-->
          
            <h3 class="cat">Kategorie użytkowników</h3>
            <ul id="menu">
           <?php $result = mysql_query ("SELECT * FROM categories;");
        while ($result && $record = mysql_fetch_array ($result))
        {
            foreach($record as $key => &$value) {$value = stripslashes($value);}
            $cat_id = $record['cat_id'];
            $cat_name = $record['cat_name'];
            echo "<li><a href=\"index.php?category=$cat_id&amp;cat_name=$cat_name\">$cat_name</a></li>";  
        }
    ?>
            </ul>      
            <h3 class="cat">Ostatnio dołączyli</h3>
            <a class="adbox" href="#"><img src="ads.gif" alt="" /></a>
            <a class="adbox" href="#"><img src="ads.gif" alt="" /></a>
            <a class="adbox" href="#"><img src="ads.gif" alt="" /></a>
            <a class="adbox" href="#"><img src="ads.gif" alt="" /></a>
            <a class="adbox" href="#"><img src="ads.gif" alt="" /></a>
            <a class="adbox" href="#"><img src="ads.gif" alt="" /></a>
            <div class="floathelp">&nbsp;</div>
          
          
       </div> <!-- end leftcol -->

       <div id="rightcol"><div id="rightcolin">
      
           <?php include("content.php"); ?>
      
       </div></div> <!-- end rightcol rightcolin -->
          
<!----><div class="floathelp">&nbsp;</div></div></div> <!-- end content contentin -->
</div></div> <!-- end greenback1 greenback2 -->

<!----><div id="footer">
      
       <div id="f1"><div id="f2">
       <div id="footerin">  
          &copy; 2003-2008 MySite.com - <a href="#">Menu link 1</a> | <a href="#">Menu link 1</a> | <a href="#">Menu link 1</a> | <a href="#">Menu link 1</a> | <a href="#">Menu link 1</a>
       </div>
       </div></div>
       <div id="footer2"><div>Created by <a href="http://www.uglytemplates.com/">Ugly Templates</a> - Sponsored by: <a href="http://spanelsko.poznejte.cz/">Poznejte Španělsko</a> and <a href="http://www.abouttravelblog.com/">About Travel Blog</a></div></div>        

<!----></div> <!-- end footer -->

  <div id="designhelp">UT01-CSS-HACK</div></body>
  </html>


plik user.php winowajca?
Kod
<div class="article"><h2>Wszyscy użytkownicy</h2>
<p>Lista wszystkich zarejestrowanych użytkowników.</p>
</div>
<?php
    include("config.php");
    @mysql_connect ("$mysql_host", "$mysql_user", "$mysql_password") or
    die ("Nie można połączyć się z MySQL");
    @mysql_select_db ("$mysql_db") or
    die ("Nie można połączyć się z bazą $mysql_db");
    mysql_query("SET NAMES 'utf8'");
    $result = mysql_query ("SELECT * FROM users ORDER BY user_data DESC;");
    while ($result && $record = mysql_fetch_array ($result))
        {
            foreach($record as $key => &$value) {$value = stripslashes($value);}
            $user_id = $record['user_id'];
            $user_name = $record['user_name'];
            $user_domain = $record['user_domain'];
            $user_data = $record['user_data'];
            $user_surname = $record['user_surname'];
            $user_description = $record['user_description'];
            $user_photo = $record['user_photo'];
            $user_active = $record['user_active'];
            $user_email = $record['user_email'];
            $user_adress = $record['user_adress'];
            $user_postalcode = $record['user_postalcode'];
            $user_city = $record['user_city'];
            $user_phone = $record['user_phone'];
            $user_shortdescription = substr($user_description, 0, 300);
            if ($record['user_active']==0)
            {
            echo "<div class=\"article\">
                <h2><a href=\"http://www.$user_domain.$domain/\">$user_name $user_surname</a></h2>
                <img src=\"userphoto/$user_photo\" alt=\"$user_name $user_surname\" height=\"155\" class=\"aligntoleft\" />
                <p style=\"height: 155px;\">$user_shortdescription</p>
                <p class=\"taright\"><a class=\"arrow\" href=\"http://www.$user_domain.$domain/\">czytaj dalej</a></p>  
                <p class=\"info\">Zarejestrowany: $user_data</p>
            </div>";
            }      
        }
?>


Proszę o przeanalizowanie kodu i pomoc w tej sprawie bo męczę się z tym już od piątku i nic nie mogę wymyślić. Za pomoc z gory dziękuję.
pianta_d
Według mnie, sesję startujesz w chwili logowania, a nie w chwili odpalenia strony. Dlatego
  1. <?php
  2. ?>
dajesz w login.php, a nie w index.php
tadek92
Nie to na pewno nie to o czym piszesz jest przyczyną tego problemu. Jestem pewien że odpowiedzialny za to jest plik user.php, tylko nie wiem co w nim jest złe że zmienia dane w sesji. Jak wyłączyłem includowanie tego pliku to wszystko było w porządku. Natomiast jeśli uruchomie ten skrypt to wali się sejsa i automatycznie zmienia się użytkownik na pierwszego zarejestrowanego użytkownika w serwisie.
pianta_d
Pokaż cały plik user.php
tadek92
To jest cały plik user.php inlcuduje go do index.php przez plik content.php, ale plik content.php jest dobry bo jak usune w nim includowanie user.php to wtedy jest dobrze.
Napewno coś w tym pliku user.php jest źle, ponieważ mam inne pliki o podobnej strukturze plik newusers.php który wyświetla najnowszych użytkowików i plik search.php. One mają ten fragment kodu odpowiedzialny za wypisanie danych użytkowników i to chyba przez to wartość sesji się zmienia, ale nie wiem czemu, ponieważ nazwy zmiennych są różne.

Czy naprawde nikt nie ma pojęcia co jest nie tak z tym skryptem Bardzo proszę o pomoc.
sannin
Po co to $_SESSION['user_id'] = $_SESSION['user_id']; w index.php ? Trochę bez sensu...
tadek92
No wiem że to jest bez sensu ale zrobiłem tak bo myślałem że dzięki temu wartość sesji mi się nie zmieni, jednak to nic nie dało. Z tym i bez tego jest ten sam problem. Jestem bezradny już nie wiem co mam robić.
pianta_d
W pliku user.php nie wypisujesz nigdzie żadnych informacji przechowywanych w sesji to niby dlaczego on jest zły?

Może gdzieś w kodzie zamiast = dałeś ==

Pozdrawiam
tadek92
sprawdzałem nie ma żadnego błędu (chyba) i co mam teraz zrobić napisać od nowa przecież to nie ma sensu. Proszę o pomoc bo męczę się z tym już prawie od tygodnia

Już sobie poradziłem z tym problemem. Został mi jeszcze jeden, chodzi mi o utrzymywanie sesji między subdomenami, żeby po zalogowaniu na stronie www.domena.pl sesja utrzymywała się na stronach www.subdomena1.domena.pl itd. Szukałem na forum i niby coś znalazłem ale i tak nie wiem jak to zrobić. Byłbym bardzo wdzięczny jeśli ktoś by mi coś doradził.
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.