Problem z logowaniem w PHP

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
całkiem_zielony
Posty: 5
Rejestracja: śr lut 23, 2005 12:33 am

Problem z logowaniem w PHP

Post autor: całkiem_zielony »

[php]
<?php
// Główne wyrażenie SUBMIT
if (isset($_POST['submit']))
{
// Połącz z bazą danych
$dbc = mysql_connect("host", "user", "haslo");
mysql_select_db("db");
// FUNKCA escape_data()
function escape_data ($data)
{
global $dbc;
if (ini_get('magic_quotes_gpc'))
{
$data = stripcslashes($data);
}
return mysql_real_escape_string($data, $dbc);
}// Koniec funkcji

$message = NULL; // Utwórz nową putsą zmienną

// sprawdz nazwę uzytkownika
if (empty($_POST['username']))
{
$u = FALSE;
$message .= '<p>Zapomniałeś podać nazwę użytkownika!</p>';
}
else
{
$u = escape_data($u);
}
// Sprawdz haslo
if (empty($_POST['haslo']))
{
$h = FALSE;
$message .= '<p>Zapomniałeś podać hasło</p>';
}
else
{
$h = escape_data($h);
}

if ($h && $u) // Jeśli wszystko OK
{
// Odczytaj odpowiednie dane z DB
$pytanie = "SELECT user_id, username, uprawnienia FROM TT_users WHERE username='$u' AND haslo = PASSWORD('$h')";
$wynik = mysql_query ($pytanie);
$row = mysql_fetch_array($wynik, MYSQL_NUM);

if (row)
{
// Ustaw COOKIE
setcookie ('username', $row[1], time()+3600, '/', 'www.Teen-Titans.strefa.pl', '0');
setcookie ('user_id', $row[0], time()+3600, '/', 'www.Teen-Titans.strefa.pl', '0');
setcookie ('uprawnienia', $row[2], time()+3600, '/', 'www.Teen-Titans.strefa.pl', '0');
header ("Location: http://" . $_SERVER['HTTP_HOST'] . dirname($_SERVER['PHP_SELF']) . "/zalogowany.php" );
exit();// Opuść skrypt
}

else // Zaden rekord nie pasuje do zapytania
{
$message = '<p>Wprowadzona nazwa użytkownika i/lub hasło nie zgadzają się z danymi! Upewnij się czy dobrz je wprowadziłeś i ew skontaktuj się z adminem</p>';
}

mysql_close(); // Zamknij połączenie z DB
}


else
{
$message .= '<p>Spróbuj jeszcze raz!</p>';
}
}// Koniec głównego wyrażenia warunkowego SUBMIT
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" />
</head>
<body bgcolor="#E5E5E5">

<?php
// Jeśli jest komunikat o błędach to wyśletl go
if (isset($message))
{
echo '<font color="red">' . $message . '</font>';
}
?>

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
<fieldset>
<legend>Wprowadz dane do formularza</legend>
<p><b>Nazwa użytkownika: </b><input type="text" name="username" value="" size="10" maxlength="20" /></p>
<p><b>Hasło: </b><input type="password" name="haslo" value="password" size="20" maxlength="20" /></p>

<div align="center"><input type="submit" name="submit" value="Wyślij" /></div>
</fieldset>
</form>

</body>
</html>
[/php]

Co w powyższym skrypcie jest nie tak :?:
formulaż pokazuje się dobrze, ale po wypełnieniu go i kliknięciu "wyślij" pokazuje się biała, czysta strona
HELP
PS
skrypt jest pisany według książki "PHP I MySQL Dynamiczne strony WWW" Larry'ego Ullmana
FanFataL
Nowy
Nowy
Posty: 113
Rejestracja: pn lut 28, 2005 1:33 am
Lokalizacja: Kraków / Katowice / Bydgoszcz
Kontakt:

Re: Problem z logowaniem w PHP

Post autor: FanFataL »

setcookie ('username', $row[1], time()+3600, '/',
'www.Teen-Titans.strefa.pl', '0');
setcookie ('user_id', $row[0], time()+3600, '/',
'www.Teen-Titans.strefa.pl', '0');
setcookie ('uprawnienia', $row[2], time()+3600, '/',
'www.Teen-Titans.strefa.pl', '0');
Martwi mnie to iż większość ludzi nazywającymi siebie programistami nie patrzy na problem głębiej a tylko na to że ma "Problem z logowaniem w PHP". Ustawianie autoryzacji w plikach cookie jest równoznaczne temu jakbyś napisał na stronie głownej login i hasło dla administratora.

Poczytaj proszę o sesjach :]

Pozdrawiam
...
ODPOWIEDZ