PHP/Bazy danych i sesje
< PHP
Przypomnijmy sobie najpierw wcześniejszy materiał. Używane były w nim tablice z użytkownikami.
Zaczniemy od utworzenia tabeli sesje (korzystając z bazy danych produkty).
CREATE TABLE `produkty`.`sesje` (
`id` INT( 100 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`login` VARCHAR( 100 ) NOT NULL ,
`haslo` VARCHAR( 1000 ) NOT NULL
) ENGINE = MYISAM ;
Teraz, kiedy mamy gotowy skrypt, musimy zmienić pierwszą część skryptu sesji - wszystko do komentarza Wlasciwy skrypt zamieniamy na:
<?php
function czyIstnieje($login, $haslo)
{
$haslo = sha1($haslo);
try
{
$pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root');
$pdo -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $pdo -> query('SELECT id, login, haslo FROM sesje');
foreach($stmt as $dane)
{
if($dane['login'] == $login && $dane['haslo'] == $haslo)
{
// O, jest ktos taki - zwroc jego ID
return $dane['id'];
/* Chcesz uzyc loginu uzytkownika? dodaj po inicjacji sesji
$_SESSION['user'] = $user;
oraz przed tym nawiasem klamrowym ponizej, ale po tym komentarzu
$user = $dane['user'];
*/
}
}
$stmt -> closeCursor();
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
}
// Jeżeli doszedłeś a tutaj, to takiego użytkownika nie ma
return false;
} // end czyIstnieje();
Aby utworzyć konta, należy utworzyć taki plik (pamiętaj, każdy może sobie utworzyć konto aż do kasacji):
<?php
try
{
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$pdo = new PDO('mysql:host=localhost;dbname=produkty', 'root', 'root');
$stmt = $pdo -> query('SELECT id, login, haslo FROM sesje');
$id = '1';
foreach($stmt as $dane)
{
$id++;
}
$haslo = sha1($_POST['haslo']);
$magic = get_magic_quotes_gpc();
if ($magic != "1") $login = mysql_escape_string($_POST['login']);
$stmt -> closeCursor();
$add = $pdo -> exec('INSERT INTO `sesje` (`id`, `login`, `haslo`) VALUES(
\''.$id.'\',
\''.$login.'\',
\''.$haslo.'\')');
if($add > 0)
{
echo 'Dodano? '.$ilosc;
}
else
{
echo 'Wystąpił błąd podczas dodawania rekordów!';
}
}
else
{
echo '
<form method="post" action="sesje_5.php">
<p>Login: <input type="text" name="login"/></p>
<p>Hasło: <input type="password" name="haslo"/></p>
<p><input type="submit" value="Dodaj"/></p>
</form>
';
}
}
catch(PDOException $e)
{
echo 'Wystapil blad biblioteki PDO: ' . $e->getMessage();
}
?>