在php中创建会话和数据验证

时间:2016-04-25 05:12:51

标签: php mysql

我创建了一个PHP脚本,用于从表中检索数据,并通过提交表单将数据存储在另一个表中。我在创建存储值和数据验证的会话时遇到了麻烦。如何在下拉列表中选择项目时创建会话并验证数据。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "leave-form";

$dbh = new PDO("mysql:host=$servername;
dbname=$dbname", $username, $password);

$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

if (isset($_POST["submit"])) {

    try {

        $sql = "INSERT INTO authority (emp_name, repo_auth, contr_auth)
VALUES   ('" . $_POST["emp_name"] . "','" . $_POST["repo_auth"] . "','" . $_POST["contr_auth"] . "')";
        if ($dbh->query($sql)) {
            echo "<script type= 'text/javascript'>alert('New Record Inserted   Successfully');</script>";
        } else {
            echo "<script type= 'text/javascript'>alert('Data not successfully   Inserted.');</script>";
        }
    } catch (PDOException $e) {
        echo $e->getMessage();
    }
}
?>

<div class="container">
    <h1>Admin</h1>
    <form name="registration" action="" method="post">
        <table>
            <tr>
                <td>Employee name:</td>
                <td>
                    <select name="emp_name">
                        <option value=""> -----------Select----------- </option> 
                        <?php
                        $stmt = $dbh->prepare('Select name from people');
                        $stmt->execute();
                        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                            echo '<option>' . $row['name'] . '</option>';
                        }
                        ?>
                    </select> 
                </td>
            </tr>

            <tr>
                <td>Manager:</td>
                <td>
                    <select name="repo_auth">
                        <option value=""> -----------Select----------- </option> 
                        <?php
                        $stmt = $dbh->prepare('Select name from people');
                        $stmt->execute();
                        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                            echo '<option>' . $row['name'] . '</option>';
                        }
                        ?>
                    </select> 
                </td>
            </tr>

            <tr>
                <td>Senior Manager:</td>
                <td>
                    <select name="contr_auth">
                        <option value=""> -----------Select----------- </option> 
                        <?php
                        $stmt = $dbh->prepare('Select name from people');
                        $stmt->execute();
                        while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
                            echo '<option>' . $row['name'] . '</option>';
                        }
                        ?>
                    </select> 
                </td>
            </tr>
            <tr>
                <td></td>
                <td>
                    <input type="submit" name="submit" value="Register" />
                    <input type="reset" name="cancel" value="clear"/>
                </td>
            </tr>
        </table>
    </form>
</div>

1 个答案:

答案 0 :(得分:0)

你可以这样做:

会话:

会话是最重要的&amp; PHP的一个非常简单的主要元素。您可以使用Session在其中存储值,然后您可以在PHP Script的其他页面中访问这些值.Unllke COOKIES 会话比Cookies更安全,因为Cookie是保存在客户端并且可以被操纵,这可能比其他任何事情造成更多伤害,而在其他sie Sessions是服务器端。您可以在会话中存储一些值,但实际会话存储在服务器上。您无法操纵它这就是为什么使用Sessions而不是Cookie更安全的原因,但是它们在代码中的某些位置都有相互使用的角色。!

如何创建会话:

创建会话非常简单, 可以像这样创建会话:

$_SESSION['session_name'] = $value;

第二,您现在可以像这样访问其他PHP脚本页面中的会话:

$stored_value = $_SESSION['session_name'];
echo $stored_value;

注意:在尝试访问session_start()数组之前,以及在将任何输出发送到浏览器之前,请记住在这两个页面上运行$_SESSION语句。只需添加session_start()在您将要使用Session的每个页面的完整开始处设置会话或尝试检索会话。!

简单使用会话:

情景: 对于实例我想在登录时创建一个Session,然后能够访问已建立Session的其他页面,直到会话被销毁。 所以我的确如何做到这一点:

在登录页面(index.php或login.php):

<?php
session_start(); 
// Add session_start() just right after the PHP Starting Tags 
// Or you will be getting Header Sent Already Error

if ($db_username == $input_username && $db_password == $input_password) {
    $_SESSION['user'] = $db_username;
    header("Location : home.php");
} else {
    echo "Username & Password Is Wrong";
}
?>

现在在您的home.php上,您可以访问只有会话就这样才能访问的数据:

在主页(home.php):

<?php
session_start();
$user =  $_SESSION['user'];
if (isset($user)) {
    echo "Welcome User : ".$user;
} else {
    // If Session is not there you will be redirected back to login page.!
    header("Location: login.php");
}
?>

现在,如果您想要注销,那么只需访问logout.php页面就可以通过这种方式销毁会话:

退出页面(logout.php):

<?php
session_start();
if (session_destroy()) {
    header("Location: login.php");
}
?>