Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Closed TopicStart new topic
> Zalogowany jako:, Problem z logowaniem
rafcio1410
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.04.2011

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


Witam,
Nazywam sie Rafal i jestem nowy na forum. Jezyk php znam srednio wiec zarejestrowalem sie na waszym forum w celu doskonalenia swojej wiedzy, a zarazem uzyskania odpowiedzi na niektore tematy od was.

W tym temacie moj problem polega na tym, ze nie wiem jak zrobic po zalogowaniu aby wyswietlal sie napis "zalogowany jako: i name usera w tym miejscu."
Kod dziala tak ze po poprawnym zalogowaniu dalem header na index.php z msg==2 i chcialbym zeby w tym miejscu zostal wyswietlony ten napis.Dacie jakies wskazowki jak to sie robi?

kod z login.php :
Kod
<?php
session_start();

//Połączenie z bazą
if (@!include('connect.php')) die("Wystąpił błąd, spróbuj później");

//Sprawdzam czy jest ktoś zarejestrowany
$sql = mysql_query("SHOW TABLES LIKE 'users'");    
if(!mysql_num_rows($sql) == 0)
{
//Sprawdzam czy użytkownik próbuje się zalogowac
if ($_POST['zaloguj'])
    {
        if (empty($_POST['log']) || empty($_POST['pass']))
            {
                $msg = "Nie wypełniłeś wszystkich pól !";
            }
        else
            {        
                $log = mysql_real_escape_string(htmlspecialchars( trim($_POST['log']) ));
                $pass = sha1( mysql_real_escape_string (htmlspecialchars( trim($_POST['pass']) ) ));
                
                //Sprawdzam czy dane użytkownika pasują do tych z rejestracji
                $sql = mysql_query("SELECT count(*) as ile FROM `users` WHERE name='$log' and hashed_psw='$pass'");        
                $row = mysql_fetch_array($sql);
                if ($row['ile'] == 1)
                    {
                        $msg = 'Za 5 sekund zostaniesz przeniesiony do panelu sterowania';
                        $_SESSION['id'] = session_id();
                        $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];                                                 
                        header("refresh:3;url=index.php?msg=2");
                    }
                else
                    {
                        $msg = 'Wpisano zły login lub hasło';
                    }
        
                
            }
    }
}
else
{
    $msg = 'Musisz się zarejestrować przed zalogowaniem !';
}

    
?>


Ten post edytował rafcio1410 18.04.2011, 12:12:10
Go to the top of the page
+Quote Post
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Proszę wstawić bbcode
Go to the top of the page
+Quote Post
matino
post
Post #3





Grupa: Zarejestrowani
Postów: 175
Pomógł: 30
Dołączył: 9.08.2007

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


Po prostu dodaj username do sesji i wyświetl w index.php.
Oczywiście musisz trochę zmodyfikować zapytanie, żeby nie zwracało count(*) tylko name, a zliczanie już sobie zrobisz funkcją count w skrypcie
  1. $_SESSION['id'] = session_id();
  2. $_SESSION['name'] = $row['name'];
  3. $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
  4. header("refresh:3;url=index.php?msg=2");

W index.php:
  1. echo 'Zalogowany jako' . $_SESSION['name'];
Go to the top of the page
+Quote Post
rafcio1410
post
Post #4





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.04.2011

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


Dzięki wielkie, właśnie o to mi chodziło. Pozdrawiam.

a teraz inaczej. Jak zrobic aby zamiast tabelki do logowania na stronie glownej pojawialo sie juz zapamietane logowanie? bo robiac to przez ?msg wiadomo ze pokaze sie to tylko raz a w momencie jak odswieze stronke laduje sie nastronie glownej znow tabelka do logowania.


Ten post edytował rafcio1410 18.04.2011, 17:15:53
Go to the top of the page
+Quote Post
filip11
post
Post #5





Grupa: Zarejestrowani
Postów: 48
Pomógł: 1
Dołączył: 9.03.2010

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


Tutaj wydaje mi się, że jak już zapamiętasz zalogowana osobę, to znaczy albo ustawić ciastko odpowiednie, albo sesje i jej zmienną i wtedy na wyświetlanie tabelki z logowaniem dajesz warunek w zależności czy to ciastko/zmienna sesji jest ustawiona to albo wyświetla się tabelka, albo zapamiętane logowanie coś takiego:

Kod
<?php if(isset($_SESSION['id'])): ?>

<!--   ZAPAMIĘTANE DANE  -->

<?php else: ?>

<!-- TABELKA Z LOGOWANIEM -->
<?php endif;?>



Taki tylko poglądowy przykład (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
rafcio1410
post
Post #6





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 18.04.2011

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


filip nie wiem czy dobrze zrozumialem ale czy tak mialem przerobic kod?
Kod
<?php
session_start();

//Połączenie z bazą
if (@!include('connect.php')) die("Wystąpił błąd, spróbuj później");

//Sprawdzam czy jest ktoś zarejestrowany
$sql = mysql_query("SHOW TABLES LIKE 'users'");    
if(!mysql_num_rows($sql) == 0)
{
//Sprawdzam czy użytkownik próbuje się zalogowac
if ($_POST['zaloguj'])
    {
        if (empty($_POST['log']) || empty($_POST['pass']))
            {
                $msg = "Nie wypełniłeś wszystkich pól !";
          
            }
        else
            {        
                $log = mysql_real_escape_string(htmlspecialchars( trim($_POST['log']) ));
                $pass = sha1( mysql_real_escape_string (htmlspecialchars( trim($_POST['pass']) ) ));
                
                //Sprawdzam czy dane użytkownika pasują do tych z rejestracji
                $sql = mysql_query("SELECT count(*) as ile FROM `users` WHERE name='$log' and hashed_psw='$pass'");        
                $row = mysql_fetch_array($sql);
                if ($row['ile'] == 1)
                    {
                        $sql2 = mysql_query("SELECT * FROM `users` WHERE name='$log' and hashed_psw='$pass'");        
                        $dane = mysql_fetch_array($sql2);                      
                        $_SESSION['id'] = session_id();
                        $_SESSION['name'] = $dane['name'];
                        $_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];                                                 
                                                
                    }
                else
                    {
                        $msg = 'Wpisano zły login lub hasło';
                    }
        
                
            }
    }
}
else
{
    $msg = 'Musisz się zarejestrować przed zalogowaniem !';
}

    
?>

<!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="pl" lang="pl">
<head>
    <title></title>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <meta name="Keywords" content="wyraz1, wyraz2, wyraz3..." />
    <meta name="description" content="Opis strony" />

    
</head>

<body>

<?php echo "<font color=red>";  if (isset($msg)) echo $msg; echo "</font>"; ?>
  <?php if(isset($_SESSION['id'])){
    
    echo $_SESSION['name'];
    }else {
    
      
      
  echo'<form id="login" action="" method="post">
                    
        <div><label for="log">Login:</label><input type="text" name="log" id="log" maxlength="35"/></div>
        <div><label for="pass">Hasło:</label><input type="password" name="pass" id="pass" maxlength="35"/></div>
        <input type="submit" id="zaloguj" name="zaloguj" value="Zaloguj" />
        <a id="register" href="register.php">Zarejestruj się</a>
        <a id="remind" href="przypomnij.php">Zapomniałem hasła</a>
        
  </form>';
}
    ?>
    

    

</body>

</html>



Wszystko na stronie dziala poprawnie, z tym ze bedzie pokazywalo login uzytkownika az do momentu kiedy nie wcisne wyloguj, czyli nie zakoncze sesji. Zatem mam pytanie jak zrobic aby po okreslonym czasie bezruchu nastepowalo wylogowywanie samoistnie?
Go to the top of the page
+Quote Post
Ociu
post
Post #7





Grupa: Moderatorzy
Postów: 1 566
Pomógł: 37
Dołączył: 14.05.2003
Skąd: Kraków




Kolega wookieb prosił aby poprawił swój post i zaczął używać bbCode. Niestety tego nie robisz.

Zamykam temat, aż nie poprawisz swoich postów.
Go to the top of the page
+Quote Post

Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.12.2025 - 18:08