Кроме структуры, формируемой header("location:") всё достаточно прямолинейно,
Отправка формы попадает -> соединением с БД (PDO+немного SQL кода)
и
всё происходит методом $_POST и выводится в $_SESSION.
index.php:
<!DOCTYPE html>
<html>
<h1>Register</h1>
<form method="POST">
<input type="text" name="user">
<input type="pass" name="pass">
<input type="submit">
</form>
<?php
session_start();
if(isset($_POST['user'], $_POST['pass'])){
require 'connect.php';
$zr++;
$query = d()->prepare("INSERT INTO u (user, pass, loc) VALUES (:user, :pass, :loc)");
$query->bindParam(':user', $_POST['user']);
$query->bindParam(':pass', $_POST['pass']);
$query->bindParam(':loc', $zr);
if($query->execute()){
$_SESSION['user'] = $row['user'];
$_SESSION['pass'] = $row['pass'];
header("Location: ".$_SERVER['PHP_SELF']);
} else{
echo 'ERROR';
}
}
?>
<h1>Login</h1>
<form method="POST">
<input type="text" name="user">
<input type="pass" name="pass">
<input type="submit">
</form>
<?php
echo $_POST['user'];
if(isset($_POST['user'], $_POST['pass'])){
require 'connect.php';
$query = d()->prepare("SELECT user, pass FROM u WHERE user=:user AND pass=:pass");
$query->bindParam(':user', $_POST['user']);
$query->bindParam(':pass', $_POST['pass']);
$query->execute();
if($row = $query->fetch()){
$_SESSION['user'] = $row['user'];
$_SESSION['pass'] = $row['pass'];
header("Location: ".$_SERVER['PHP_SELF']);
}
}
$us=$_SESSION['user'];
echo 'user ',$us;
?>
<?php
if(isset($_SESSION['user'])){
$us=$_SESSION['user'];
echo '
user ',$us, ' ', '<a href="logout.php">Logout</a>';
echo '
', '<a href="zrs.php">zero session</a>';
}
?>
</html>
connect.php:
<?php
function d(){
try{
$db = new pdo("mysql:host=localhost;dbname=tx;","root","hyuiuik");
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $db;
} catch(PDOException $e){
echo 'ERROR', $e->getMessage();
}
}
?>
ВИД на табл. пользователей:
Код:
|
mysql> select * from u;
+----+--------+------+------+
| id | user | pass | loc |
+----+--------+------+------+
| 1 | a | asdf | 0 |
| 2 | b | bsdf | 0 |
| 3 | b | bsdf | 0 |
| 4 | c | csdf | 0 | |
Но непонимание на этапе формирования структуры подготовления и отправки собранных данных.
примерный вид:
1.php
<?php
session_start();
К
О
Д
session_write_close();
if( isset($_POST['user'] ){
К
О
Д
}else{
К О Д
}
if( !isset($_POST['user']) ){
header("location: http://" . $_SERVER['HTTP_HOST'] . "/login.php");
}else{
//user установлен
КОД ЗАПУСКА
}