我创建了一个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>
答案 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");
}
?>