как создать страницу без доступа до регистрации пользователя - PullRequest
0 голосов
/ 21 мая 2018

Я хочу создать страницу с поздравлениями («страница с поздравлениями»), куда пользователи должны перенаправляться после отправки формы, даже если они знают ссылку на «страницу с поздравлениями» и пытаются получить доступ к ней, не подписывая ее.на страницу регистрации

//signup.php (signup page)

<!DOCTYPE html>
<html>
<head>
		<meta charset="utf-8">
        <meta name="viewport" content="width=device-width
        ,initial-scale=1.0">
        <link rel="stylesheet" type="text/css"
        href="../css/signup.css">  
	<title></title>
</head>
<body>
	<div id="container"> <!---------------------------- red------------------------------------------->
		<div class="headerdiv">
			<div class="imagediv">
			</div>
		</div>	
		<div id ="main">
		<form action="../include/signup.inc.php" method="POST">
			<input type="text" name="fname" placeholder="firstname">
			<br>
			<input type="text" name="lname" placeholder="lastname">
			<br>
			<input type="text" name="uname" placeholder="username">
			<br>
			<input type="email" name="email" placeholder="email">
			<br>
			<input type="password" name="pwd" placeholder="password">
			<br>
			<button type="submit" name="submit">submit</button>
		</form>
		</div>
	</div>
</body>
</html>
<?php

if(isset($_POST['submit'])) {
	include_once 'connect.php';
	
	
	$fname = mysqli_real_escape_string($conn, $_POST['fname']);
	$lname = mysqli_real_escape_string($conn, $_POST['lname']);
	$email = mysqli_real_escape_string($conn, $_POST['email']);
	$uname = mysqli_real_escape_string($conn, $_POST['uname']);
	$pwd = mysqli_real_escape_string($conn, $_POST['pwd']);	
  
  if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
				header("Location: ../php/signup.php?signup=email");
				exit();
			} else {
				$sql = "SELECT * FROM users WHERE user_uname='$uname'";
				$result = mysqli_query($conn, $sql);
				$resultCheck = mysqli_num_rows($result);
				
				if($resultCheck > 0) {
					header("Location: ../php/signup.php?signup=usertaken");
		            exit();	
					
				} else {
					// hashing the password
					$hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
					//Insert the user into the database
					$sql = "INSERT INTO user (fname, lname, email, uname, pwd) VALUES ('$fname',
					'$lname', '$email', '$uname', '$hashedPwd');";
					mysqli_query($conn, $sql);
					header("Location: ../php/congrats.php");
		            exit();	
				}
			}
		}
	}
	
} else {
	header("Location: ../php/signup.php");
	exit();
}



//////////////////////////////


/// the congrats page ('congrats.php')


<!DOCTYPE html>
<html>
<head>
		<meta charset="utf-8">
        <meta name="viewport" content="width=device-width
        ,initial-scale=1.0">
        <link rel="stylesheet" type="text/css"
        href="../css/congrats.css">  
	<title></title>
</head>
<body>
	<p>REGISTRATION SUCCESS</p>

</body>
</html>
<?php


//connection to data base


$servername = 'localhost';
$username = 'root';
$password = 'root';
$database = 'webz';

$conn = mysqli_connect($servername, $username, $password, $database);

Я хочу создать страницу с поздравлениями ('страницу с поздравлениями), куда пользователи должны перенаправляться после отправки формы, даже если они знаютссылка на «страницу поздравлений», и они пытаются получить доступ к ней без подписи; она должна перейти на страницу регистрации

Ответы [ 2 ]

0 голосов
/ 21 мая 2018

Попробуйте PHP $ _SESSION, который представляет собой ассоциативный массив, содержащий все переменные сеанса, доступные текущему сценарию.Установите переменную сеанса всякий раз, когда пользователь успешно вошел в приложение, и отметьте ее там, где вы хотите ограничить доступ пользователя к странице без входа в систему.

 <?php

    session_start();

    // to set the session variable // for e.g; user_id
    $_SESSION['user_id'] = ''; // valid user_id.

    // check the session variable // for congrats page

    if(!empty($_SESSION['user_id'])){
    // congrats page
    }else{
      header('Location: http://www.example.com/signup');
    }

    // session_destroy(); // use when user logs out.
0 голосов
/ 21 мая 2018

Вы можете использовать $ _SESSION для выполнения этой работы.После того как пользователь зарегистрируется, вы сохраните что-то в переменной $ _SESSION.

например,

session_start();
//after sign up
$_SESSION['signedup']=1;

И на странице поздравлений проверьте переменную

session_start();
if($_SESSION['signedup']){
   //show the page
}else{
   header('Location: http://www.example.com/signup');
}
...