Как добавить данные в базу данных при применении сеансов

Я пытаюсь создать проект для лекторов, управляющих экзаменационными работами, как мой первый 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

Решение

Итак, я внимательно посмотрел на это, и здесь много недостающей информации, чтобы кто-то мог полностью вам помочь. Я дам вам все, что смогу, основываясь на вышеизложенном, но после этого у вас будет несколько испытаний, а также некоторые исследования.

Во-первых, ваша ошибка не потому, что вы включили 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 страница не зависит от других ваших страниц, так как они разные проблемы. У вас есть несколько проблем на каждой странице, которые могут усложнить устранение неполадок, поэтому просто решайте их по одному.

Надеюсь, это поможет.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector