如何在应用Sessions时将数据添加到数据库中

时间:2017-09-10 09:21:25

标签: php session mysqli

我正在尝试为管理试卷的讲师创建一个项目,作为我的第一个PHP项目。到目前为止,我已成功创建了一个add_user.php应用准备好的语句,这些语句最初工作正常。然后我将session_start()包含在add_user.php中,并在提交表单后似乎没有发生任何事情。

没有弹出错误,但成功声明也没有弹出。我检查了数据库,是的,它是空的。我还在试图找出究竟出了什么问题。如果它是会话,我如何正确实现会话,以便它不会篡改功能?查看了几个关于会话的参考和教程,发现它们主要解释了如何应用会话的基础知识。

如果有人可以帮助我,我真的很感激。我是PHP的新手,还有很多需要学习的地方。

auth.php:

   <?php
session_start();
if(!isset($_SESSION["user_id"])){
header("Location: login.php");
exit(); }
?>

adduser.php:

 <?php  
session_start();
require('dbconnect.php');
include('header.php');

$status = "";
// If form submitted, insert values into the database.
if (isset($_POST['userid'])){
        // removes backslashes

//escapes special characters in a string
$name = mysqli_real_escape_string($con, $_POST['name']);
$username = mysqli_real_escape_string($con, $_POST['userid']); 
$email = mysqli_real_escape_string($con, $_POST['email']);
$password = mysqli_real_escape_string($con,md5($_POST['password']));    
$usertype = mysqli_real_escape_string($con, $_POST['usertype']);
$trn_date = date("Y-m-d H:i:s");


$query = "INSERT into `users` (name, user_id, email, password, user_type, trn_date) VALUES (?, ?, ?, ?, ?, ?);";

   $stmt = mysqli_stmt_init($con);
   if (!mysqli_stmt_prepare($stmt, $query)) {
        echo "SQL Query Failure";
   } 
   else if (mysqli_stmt_prepare($stmt, $query)) {
    mysqli_stmt_bind_param($stmt, "ssssss", $name, $userid, $email, $password, $usertype, $trn_date);
    mysqli_stmt_execute($stmt);


echo "<div class='alert alert-success' role='alert'>
<h3>You are registered successfully.</h3>
<br/>Click here to <a href='login.php'>Login</a></div>";
       }         
        } else {
?>

<!DOCTYPE html>
<html lang="en">

<body>
    <div class="container">
        <div class="row main">
        <div class="panel panel-default">

            <div class="main-login main-center">
            <div class="panel-heading">
                Register Subject
            </div>
                <form class="form-horizontal" method="post" action="#">

                    <div class="form-group">
                        <label for="name" class="cols-lg-2 control-label"></label>
                        <div class="cols-lg-10">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-user fa" aria-hidden="true"></i></span>
                                <input type="text" class="form-control" name="name" id="name"  placeholder="Enter user Name"/>
                            </div>
                        </div>
                    </div>

                    <div class="form-group">
                        <label for="userid" class="cols-lg-2 control-label"></label>
                        <div class="cols-lg-10">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-users fa" aria-hidden="true"></i></span>
                                <input type="text" class="form-control" name="userid" id="userid"  placeholder="Enter User ID"/>
                            </div>
                        </div>
                    </div>

                    <div class="form-group">
                        <label for="email" class="cols-lg-2 control-label"></label>
                        <div class="cols-lg-10">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-envelope fa" aria-hidden="true"></i></span>
                                <input type="text" class="form-control" name="email" id="email"  placeholder="Enter user Email"/>
                            </div>
                        </div>
                    </div>

                    <div class="form-group">
                        <label for="password" class="cols-lg-2 control-label"></label>
                        <div class="cols-lg-10">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-lock fa-lg" aria-hidden="true"></i></span>
                                <input type="password" class="form-control" name="password" id="password"  placeholder="Enter user Password"/>
                            </div>
                        </div>
                    </div>

                    <div class="form-group">
                        <label for="confirm" class="cols-lg-2 control-label"></label>
                        <div class="cols-lg-10">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="fa fa-lock fa-lg" aria-hidden="true"></i></span>
                                <input type="password" class="form-control" name="confirm" id="confirm"  placeholder="Confirm user Password"/>
                            </div>
                        </div>
                    </div>

                    <div class="cols-lg-10">
                            <div class="form-group">
                                    <label>User Role</label>
                                    <select name="usertype" class="form-control">
                                        <option value="admin">Admin</option>
                                        <option value="lect">Lecturer</option>  
                                        <option value="cord">Exam Coordinator</option>                          
                                    </select>
                              </div>
                    </div>

                    <div class="form-group ">
                        <button type="submit" class="btn btn-primary btn-lg btn-block login-button">Register</button>
                    </div>
                    <div class="login-register">
                        <a href="index.php">Login</a>
                     </div>
                </form>
            </div>
        </div>
    </div>
</div>
<?php } ?>

    <script type="text/javascript" src="assets/js/bootstrap.js"></script>
</body>

1 个答案:

答案 0 :(得分:0)

好的,所以我给了它一个很难看的东西,这里有很多缺少的信息让某人能够完全帮助你。基于上面的内容,我会尽我所能给你,但是你可以做一些试验,然后做一些研究。

首先,您的错误不是因为您包含session_start();它甚至看起来不像您之后引用的会话,因此该函数在您当前的脚本中是无用的。如果您在顶部有if (isset($_SESSION['userID'])){}(或您在会话字段中设置的任何内容)以查看用户是否已登录,那么您将有理由将其包含在内。现在它什么也没做。

其次,我假设您希望html表单中的字段发布到页面顶部的php处理程序,但是您没有定义它。您有action="#",但如果您希望将其发布到同一页面,则表单标签中需要action="< ? php echo $_SERVER['PHP_SELF'] ?>"。然后在页面顶部,将您的php包装在if ($_SERVER['REQUEST_METHOD'] == "POST"){中。在这种情况下,表单材料将由同一页面发布和处理。目前您只有if(isset($_POST['userID'])),但除非您将userID从其他页面发布到adduser.php,否则不会设置任何内容。

ob_start()session_start()的顺序无关紧要,但需要ob_start()才能处理标题。这是一个快速的Google或Stack Overflow搜索,因此找到示例应该不难。

您应该独立于其他页面测试您的adduser.php页面,因为它们是不同的问题。您在每个页面上都会遇到一些问题,这些问题会使您的故障排除变得复杂,因此请一次只处理一个问题。

我希望这会有所帮助。