Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MYSQL] Skrypt logowania
dix
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 7.11.2008

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


Witam. Poniżej kod skryptu, który znalazłem w sieci. U mnie działa jednak czasem po zalogowaniu nie wyświetla się zawartość tajnej strony (wyświetla się pusta strona), szczególnie jak kliknę na enter zamiast przycisku loguj. Prośba do bardziej doświadczonych aby sprawdzili czy coś można z tym zrobić.
<codebox>
<?php

session_start();
ob_start();

mysql_connect('host','user','haslo');
mysql_select_db(nazwa bazy);


$login = isset($_SESSION['login']) ? $_SESSION['login'] : mysql_escape_string($_POST['login']);
$haslo = mysql_escape_string(md5($_POST['pass']));

$zapytanie = mysql_query("SELECT * FROM nazawa tabeli WHERE login = '$login'");

$dane = mysql_fetch_array($zapytanie);


if(isset($_POST['login']) && isset($_POST['pass'])) {
if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'')
{

$_SESSION['admin']='ok';
$_SESSION['login']=''.$dane['login'].'';

setcookie("log" , "log", time()+3600, "/","", 0);
header("Location: log.php");

}
else { echo 'zle haslo'; }
}



if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))

{
echo'

<br><br><br><center><table class="text"><form action="log.php" method="POST">
<tr><td align="right">Login:</td>
<td><input type="text" name="login"></td></tr>
<tr><td align="right">Password:</td>
<td><input type="password" name="pass"></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Login"></td></tr></form></table></center>';




}

if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log']))
{



echo '<p align="right" class="text">Witaj '.$_SESSION['login'].', <a href="?p=wyloguj">Log out</a></p>';

include "costam.php";



if($_GET['p']=='wyloguj') {



session_destroy(); //kasujemy sesje
setcookie("log" , "log", time()-3600, "/","", 0);

header("Location: log.php");

}



}

?>
</codebox>

Na innych zabezpieczonych stronach wklejam

<codebox>
<?

session_start();
ob_start();

if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log']))
{


}

else {

header("Location: log.php");
}

?>
</codebox>

Proszę również o opinię czy ten skrypt jest bezpieczny i czy mozna go jeszcze jakoś zmodyfikować.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
batman
post
Post #2





Grupa: Moderatorzy
Postów: 2 921
Pomógł: 269
Dołączył: 11.08.2005
Skąd: 127.0.0.1




Proszę poprawić bbcode.
Go to the top of the page
+Quote Post
dix
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 7.11.2008

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


Kod
<?php

session_start();
ob_start();  

mysql_connect('host','user','haslo');
mysql_select_db(nazwa bazy);


$login = isset($_SESSION['login']) ? $_SESSION['login'] : mysql_escape_string($_POST['login']);
$haslo = mysql_escape_string(md5($_POST['pass']));

$zapytanie = mysql_query("SELECT * FROM nazawa tabeli WHERE login = '$login'");

$dane = mysql_fetch_array($zapytanie);
  

if(isset($_POST['login']) && isset($_POST['pass'])) {
if($login ==''.$dane['login'].'' && $haslo ==''.$dane['haslo'].'')
{
    
    $_SESSION['admin']='ok';
    $_SESSION['login']=''.$dane['login'].'';

  setcookie("log" , "log", time()+3600, "/","", 0);
  header("Location: log.php");

}
else { echo 'zle haslo'; }
}



if(!isset($_SESSION['admin']) && !isset($_SESSION['login']) && $_SESSION['admin'] != 'ok' && !isset($_POST['submit']) && $_GET['p']!='wyloguj' && !isset($_COOKIE['log']))

{
echo'

<br><br><br><center><table class="text"><form action="log.php" method="POST">
<tr><td align="right">Login:</td>
<td><input type="text" name="login"></td></tr>
<tr><td align="right">Password:</td>
<td><input type="password" name="pass"></td></tr>
<tr><td></td><td><input type="submit" name="submit" value="Login"></td></tr></form></table></center>';




}

if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log']))
{



echo '<p align="right" class="text">Witaj '.$_SESSION['login'].', <a href="?p=wyloguj">Log out</a></p>';

include "costam.php";



if($_GET['p']=='wyloguj') {



session_destroy(); //kasujemy sesje
setcookie("log" , "log", time()-3600, "/","", 0);

header("Location: log.php");

}



}

?>


i jeszcze

Kod
<?

session_start();
ob_start();

if($_SESSION['admin'] == 'ok' && isset($_COOKIE['log']))
{


}

else {

header("Location: log.php");
}

?>
Go to the top of the page
+Quote Post
Axexis
post
Post #4





Grupa: Zarejestrowani
Postów: 98
Pomógł: 14
Dołączył: 13.01.2008
Skąd: Birmingham

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


1. Jak kodujesz coś za pomocą md5 to nie potrzebne jest już "mysql_escape_string()" (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

2. Nie chcę mi się szukać ew. błędu, dlatego na szybko napiszę kod logowania.

  1. <?php
  2.  
  3. if (!mysql_connect('host','user','haslo') || !mysql_select_db('baza danych'))
  4.    die("Blad polaczenia z baza danych: ".mysql_error());
  5.  
  6. function check_session()
  7. {
  8.    if(isset($_SESSION['login']))
  9.    {
  10.        $dane = explode("|",$_SESSION['login']);
  11.        $login = $dane[1];
  12.        $pass = $dane[2];
  13.        $query = "SELECT haslo FROM nazwa tabeli WHERE login='$login'";
  14.        if (mysql_num_rows(mysql_query($query) == "1")
  15.             return true;
  16.        else
  17.             return false;
  18.     }
  19. }
  20.  
  21. function tajna_tresc()
  22. {
  23.    echo "Tajna tresc";
  24. }
  25.  
  26. function login_page()
  27. {
  28.    echo "form z logowaniem";
  29. }
  30.  
  31. if(!isset($_GET['q']) || $_GET['q'] == "index" || $_GET['q'] == "login")
  32. {
  33.   if(check_session())
  34.       tajna_tresc();
  35.   else
  36.       login_page();
  37. } elseif ($_GET['q'] == "logout")
  38. {
  39.    if(check_session())
  40.        session_destroy();
  41.    else
  42.        error_notlogged();
  43. } else
  44.    error_badpage();
  45. ?>


Tyle zdazylem na szybko zrobic, reszte (tj. logowanie, wg. sesji jak masz wyzej [sesja o nazwie login o wartosci "czas|login|haslo(md5)"]) mozesz zrobic sam (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Pozdro

Ten post edytował Axexis 7.11.2008, 11:03:08
Go to the top of the page
+Quote Post

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: 23.08.2025 - 08:59