Показать сообщение отдельно
  #1 (permalink)  
Старый 01.01.2015, 09:55
Интересующийся
Отправить личное сообщение для xcislav Посмотреть профиль Найти все сообщения от xcislav
 
Регистрация: 25.11.2013
Сообщений: 10

Минимальная, одностраничная PHP регистрация: БД, форма, $_POST, $_SESSION
Кроме структуры, формируемой 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 установлен
КОД ЗАПУСКА
}
Ответить с цитированием