我创建了一个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>
你可以
这样做:
会话:
会话是最重要的,也是PHP的一个非常简单的主要元素。您可以使用会话在其中存储值,然后您可以在PHP脚本的其他页面上访问这些值.Unllke COOKIES会话比Cookie安全得多,因为Cookie保存在客户端并且可以纵,这可能比其他任何东西都造成更大的伤害,而在另一个sie会话是服务器端。您可以在会话中存储一些值,但实际会话存储在服务器上。您无法操纵它,因此这就是为什么使用会话而不是 Cookie 更安全的原因,但两者都在代码中的某些位置相互使用
。如何创建会话:
创建会话非常简单,可以这样创建会话:
$_SESSION['session_name'] = $value;
第二,您现在可以像这样在其他 PHP 脚本页面中访问您的会话:
$stored_value = $_SESSION['session_name'];
echo $stored_value;
注意:请记住在尝试访问$_SESSION
数组之前,以及在将任何输出发送到浏览器之前,在这两个页面上运行session_start()
语句。只需在您将要使用会话的每个页面的完整开头添加session_start()
即可设置会话或尝试检索会话。!
会话的简单使用:
场景:例如,我想在登录时创建一个会话,然后能够访问具有已建立会话的其他页面,直到会话被销毁。!所以这正是我该怎么做:
在登录页面(索引.php或登录.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
上,您可以访问只有在会话存在时才能访问的数据,如下所示:
在主页(主页.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
页面即可以这种方式销毁会话:
注销页面 (注销.php) :
<?php
session_start();
if (session_destroy()) {
header("Location: login.php");
}
?>