Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Skrypt logowania
Forum PHP.pl > Forum > Przedszkole
dix
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ć.
batman
Proszę poprawić bbcode.
dix
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");
}

?>
Axexis
1. Jak kodujesz coś za pomocą md5 to nie potrzebne jest już "mysql_escape_string()" 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 winksmiley.jpg

Pozdro
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.