Intereting Posts
Когда im отправляет запрос Ajax в моем веб-приложении, тогда сторона контроллера дает мне скрипт в параметре запроса в laravel Найти или Создать с Красноречивым php-cgi.exe завершает работу после 500 ударов Динамическая загрузка контента с помощью Ajax CONCAT () в списке SELECT Как именно вы используете json_decode для передачи массива javascript в php? Попытка «вызвать» хранимые процедуры с помощью CodeIgniter Перетаскивание столбцов PHP, JS, как это можно сделать? является ли определение типа mime лучшим способом для обнаружения своего рода файла? Как сделать цикл для нескольких plupload Передача данных с контроллера на View в приложении PHP MVC REGEX: захватывать все до определенного слова Добавить период / точку в конце строки в текстовом редакторе tinymce Передайте значение переменной с одной php-страницы на другую Кнопка Paypal 'Buy Now' не позволяет мне динамически устанавливать цену

Как перенаправить на другую страницу с помощью PHP

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

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

Это проблема. Я выпустил кучу информации (включая HTML для создания самой страницы входа в систему). Итак, как мне перенаправить пользователя с одной страницы на другую?

Какие у меня варианты? Кроме того, какова наилучшая практика в этих случаях?

Благодаря!

EDIT: Вот моя вся страница login.php

<?php session_start(); echo "<!DOCTYPE html> <html> <head> <meta charset='utf-8'> <title>Sprout</title> <link rel='stylesheet' href='stylesheet.css' type='text/css'> </head> <body> <div class='box'> <form action='login.php' method='post'> Name<br /> <input type='text' name='username' class='form'/><br /> Password<br /> <input type='password' name='password' class='form'/> <input type='submit' value='Login' class='button' /> </form> </div> </body> </html>"; if ($_SERVER['REQUEST_METHOD'] == 'POST') { $username = $_POST["username"]; $password = $_POST["password"]; $dbhost = "localhost"; $dbuser = "root"; $dbpass = "root"; $conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ("Error connecting to database"); $dbname = "database"; mysql_select_db($dbname); $query = "SELECT username FROM users WHERE username = '$username' AND password = '$password'"; $result = mysql_query($query) or die ("Failed Query of " . $query); while($row = mysql_fetch_assoc($result)) { $_SESSION["user"] = $username; } } ?> 

Это проблема. Я выпустил кучу информации (включая HTML для создания самой страницы входа в систему). Итак, как мне перенаправить пользователя с одной страницы на другую?

Это означает, что ваш дизайн приложения довольно сломан. Вы не должны выполнять вывод, пока работает ваша бизнес-логика. Используйте механизм шаблонов (например, Smarty ) или быстро исправить его, используя буферизацию вывода ).

Другой вариант (не очень хороший!) Приведет к перенаправлению JavaScript:

 <script type="text/javascript">location.href = 'newurl';</script> 

Вы можете использовать функцию, аналогичную:

 function redirect($url) { ob_start(); header('Location: '.$url); ob_end_flush(); die(); } 

Стоит отметить, что вы всегда должны использовать ob_flush() или ob_start() в начале своего header('location: ...'); функции, и вы всегда должны следовать им с помощью функции die() или exit() чтобы предотвратить дальнейшее выполнение кода.

Вот более подробное руководство, чем упоминалось в других ответах: http://www.exchangecore.com/blog/how-redirect-using-php/

Это руководство включает в себя причины использования функций die() / exit() в ваших перенаправлениях, а также когда использовать ob_flush() vs ob_start() и некоторые потенциальные ошибки, оставленные другими ответами в этой точке.

Вы можете условно перенаправить на некоторую страницу в php-файл ….

 if { //You need to redirect header("Location: http://www.yourwebsite.com/user.php"); /* Redirect browser */ exit(); } else{ // do some } 

Предполагая, что вы используете файлы cookie для входа в систему, просто позвоните ему после вызова setcookie – в конце концов, вы должны называть его до выхода.

В общем, вы можете проверить наличие имени кнопки отправки формы в начале скрипта, выполнить свою логику и затем вывести материал:

 if(isset($_POST['mySubmit'])) { // the form was submitted // ... // perform your logic // redirect if login was successful header('Location: /somewhere'); } // output your stuff here 

Вы можете использовать ob_start(); прежде чем отправлять какой-либо вывод. Это скажет PHP, чтобы сохранить все выходные данные в буфере до завершения выполнения сценария, поэтому вы все равно можете изменить заголовок.

Обычно я не использую буферизацию вывода, для простых проектов я сохраняю всю логику в первой части моего скрипта, затем выводя весь HTML .

Самый простой подход заключается в том, что ваш скрипт проверяет данные входа в форму «сверху» скрипта перед любым выходом.

Если логин действителен, вы будете перенаправлять, используя функцию «header».

Даже если вы используете «ob_start ()», иногда бывает, что вы пропускаете одно пробельное пространство, которое приводит к выходу. Но тогда вы увидите инструкцию в своих журналах ошибок.

 <?php ob_start(); if (FORMPOST) { if (POSTED_DATA_VALID) { header("Location: https://www.yoursite.com/profile/"); ob_end_flush(); exit; } } /** YOUR LOGINBOX OUTPUT, ERROR MESSAGES ... **/ ob_end_flush(); ?> 

header не будет работать для всех

Используйте ниже простой код

 <?php echo "<script> location.href='new_url'; </script>"; exit; ?> 

Хотя это не безопасно (без обид или чего-то еще), просто вставьте функцию заголовка после установки переменной сеанса

  while($row = mysql_fetch_assoc($result)) { $_SESSION["user"] = $username; } header('Location: /profile.php'); 

При нажатии кнопки BUTTON

  if(isset($_POST['save_btn'])) { //write some of your code here, if necessary echo'<script> window.location="B.php"; </script> '; } 
 firstly create index.php page and just copy paste below code :- <form name="frmUser" class="well login-form" id="form" method="post" action="login_check.php" onSubmit="return FormValidation()"> <legend> <icon class="icon-circles"></icon>Restricted Area<icon class="icon-circles-reverse"></icon> </legend> <div class="control-group"> <label class="control-label" for="inputPassword">Username</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-user icon-cream"></icon> </span> <input class="input" type="text" name="username" id="username" placeholder="Username" /> </div> </div> </div> <div class="control-group"> <label class="control-label" for="inputPassword">Password</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-password icon-cream"></icon> </span> <input class="input" type="password" name="password" id="password" value="" placeholder="Password" /> </div> </div> </div> <div class="control-group signin"> <div class="controls "> <input type="submit" class="btn btn-block" value="Submit" /> <div class="clearfix"> <span class="icon-forgot"></span><a href="#">forgot password</a> </div> </div> </div> </form> /*------------------after that ----------------------*/ create a login_check.php and just copy paste this below code :- <?php session_start(); include('conn.php'); <?php /* Redirect browser */ header("location:index.php"); /* Make sure that code below does not get executed when we redirect. */ exit; ?> <?php if(count($_POST)>0) { $result = mysql_query("SELECT * FROM admin WHERE username='".$_POST["username"]."' and password = '".$_POST["password"]."'"); $row = mysql_fetch_array($result); if(is_array($row)) { $_SESSION["user_id"] = $row[user_id]; $_SESSION["username"] = $row[username]; $session_register["user_id"] = $row[user_id]; $session_register["username"] = $row[username]; } else { $_SESSION['msg']="Invalid Username or Password"; header("location:index.php"); } } if(isset($_SESSION["user_id"])) { header("Location:dashboard.php"); } ?> /*-----------------------after that ----------------------*/ create a dashboard.php and copy paste this code in starting of dashboard.php <?php session_start(); include('conn.php'); include('check_session.php'); ?> /*-----------------------after that-----------------*/ create a check_session.php which check your session and copy paste this code :- <?php if($_SESSION["user_name"]) { ?> Welcome <?php echo $_SESSION["user_name"]; ?>. Click here to <a href="logout.php" tite="Logout">Logout.</a> <?php } else { header("location:index.php"); } ?> if you have any query so let me know on my mail id farjicompany@gmail.com в firstly create index.php page and just copy paste below code :- <form name="frmUser" class="well login-form" id="form" method="post" action="login_check.php" onSubmit="return FormValidation()"> <legend> <icon class="icon-circles"></icon>Restricted Area<icon class="icon-circles-reverse"></icon> </legend> <div class="control-group"> <label class="control-label" for="inputPassword">Username</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-user icon-cream"></icon> </span> <input class="input" type="text" name="username" id="username" placeholder="Username" /> </div> </div> </div> <div class="control-group"> <label class="control-label" for="inputPassword">Password</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-password icon-cream"></icon> </span> <input class="input" type="password" name="password" id="password" value="" placeholder="Password" /> </div> </div> </div> <div class="control-group signin"> <div class="controls "> <input type="submit" class="btn btn-block" value="Submit" /> <div class="clearfix"> <span class="icon-forgot"></span><a href="#">forgot password</a> </div> </div> </div> </form> /*------------------after that ----------------------*/ create a login_check.php and just copy paste this below code :- <?php session_start(); include('conn.php'); <?php /* Redirect browser */ header("location:index.php"); /* Make sure that code below does not get executed when we redirect. */ exit; ?> <?php if(count($_POST)>0) { $result = mysql_query("SELECT * FROM admin WHERE username='".$_POST["username"]."' and password = '".$_POST["password"]."'"); $row = mysql_fetch_array($result); if(is_array($row)) { $_SESSION["user_id"] = $row[user_id]; $_SESSION["username"] = $row[username]; $session_register["user_id"] = $row[user_id]; $session_register["username"] = $row[username]; } else { $_SESSION['msg']="Invalid Username or Password"; header("location:index.php"); } } if(isset($_SESSION["user_id"])) { header("Location:dashboard.php"); } ?> /*-----------------------after that ----------------------*/ create a dashboard.php and copy paste this code in starting of dashboard.php <?php session_start(); include('conn.php'); include('check_session.php'); ?> /*-----------------------after that-----------------*/ create a check_session.php which check your session and copy paste this code :- <?php if($_SESSION["user_name"]) { ?> Welcome <?php echo $_SESSION["user_name"]; ?>. Click here to <a href="logout.php" tite="Logout">Logout.</a> <?php } else { header("location:index.php"); } ?> if you have any query so let me know on my mail id farjicompany@gmail.com в firstly create index.php page and just copy paste below code :- <form name="frmUser" class="well login-form" id="form" method="post" action="login_check.php" onSubmit="return FormValidation()"> <legend> <icon class="icon-circles"></icon>Restricted Area<icon class="icon-circles-reverse"></icon> </legend> <div class="control-group"> <label class="control-label" for="inputPassword">Username</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-user icon-cream"></icon> </span> <input class="input" type="text" name="username" id="username" placeholder="Username" /> </div> </div> </div> <div class="control-group"> <label class="control-label" for="inputPassword">Password</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-password icon-cream"></icon> </span> <input class="input" type="password" name="password" id="password" value="" placeholder="Password" /> </div> </div> </div> <div class="control-group signin"> <div class="controls "> <input type="submit" class="btn btn-block" value="Submit" /> <div class="clearfix"> <span class="icon-forgot"></span><a href="#">forgot password</a> </div> </div> </div> </form> /*------------------after that ----------------------*/ create a login_check.php and just copy paste this below code :- <?php session_start(); include('conn.php'); <?php /* Redirect browser */ header("location:index.php"); /* Make sure that code below does not get executed when we redirect. */ exit; ?> <?php if(count($_POST)>0) { $result = mysql_query("SELECT * FROM admin WHERE username='".$_POST["username"]."' and password = '".$_POST["password"]."'"); $row = mysql_fetch_array($result); if(is_array($row)) { $_SESSION["user_id"] = $row[user_id]; $_SESSION["username"] = $row[username]; $session_register["user_id"] = $row[user_id]; $session_register["username"] = $row[username]; } else { $_SESSION['msg']="Invalid Username or Password"; header("location:index.php"); } } if(isset($_SESSION["user_id"])) { header("Location:dashboard.php"); } ?> /*-----------------------after that ----------------------*/ create a dashboard.php and copy paste this code in starting of dashboard.php <?php session_start(); include('conn.php'); include('check_session.php'); ?> /*-----------------------after that-----------------*/ create a check_session.php which check your session and copy paste this code :- <?php if($_SESSION["user_name"]) { ?> Welcome <?php echo $_SESSION["user_name"]; ?>. Click here to <a href="logout.php" tite="Logout">Logout.</a> <?php } else { header("location:index.php"); } ?> if you have any query so let me know on my mail id farjicompany@gmail.com в firstly create index.php page and just copy paste below code :- <form name="frmUser" class="well login-form" id="form" method="post" action="login_check.php" onSubmit="return FormValidation()"> <legend> <icon class="icon-circles"></icon>Restricted Area<icon class="icon-circles-reverse"></icon> </legend> <div class="control-group"> <label class="control-label" for="inputPassword">Username</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-user icon-cream"></icon> </span> <input class="input" type="text" name="username" id="username" placeholder="Username" /> </div> </div> </div> <div class="control-group"> <label class="control-label" for="inputPassword">Password</label> <div class="controls"> <div class="input-prepend"> <span class="add-on"><icon class="icon-password icon-cream"></icon> </span> <input class="input" type="password" name="password" id="password" value="" placeholder="Password" /> </div> </div> </div> <div class="control-group signin"> <div class="controls "> <input type="submit" class="btn btn-block" value="Submit" /> <div class="clearfix"> <span class="icon-forgot"></span><a href="#">forgot password</a> </div> </div> </div> </form> /*------------------after that ----------------------*/ create a login_check.php and just copy paste this below code :- <?php session_start(); include('conn.php'); <?php /* Redirect browser */ header("location:index.php"); /* Make sure that code below does not get executed when we redirect. */ exit; ?> <?php if(count($_POST)>0) { $result = mysql_query("SELECT * FROM admin WHERE username='".$_POST["username"]."' and password = '".$_POST["password"]."'"); $row = mysql_fetch_array($result); if(is_array($row)) { $_SESSION["user_id"] = $row[user_id]; $_SESSION["username"] = $row[username]; $session_register["user_id"] = $row[user_id]; $session_register["username"] = $row[username]; } else { $_SESSION['msg']="Invalid Username or Password"; header("location:index.php"); } } if(isset($_SESSION["user_id"])) { header("Location:dashboard.php"); } ?> /*-----------------------after that ----------------------*/ create a dashboard.php and copy paste this code in starting of dashboard.php <?php session_start(); include('conn.php'); include('check_session.php'); ?> /*-----------------------after that-----------------*/ create a check_session.php which check your session and copy paste this code :- <?php if($_SESSION["user_name"]) { ?> Welcome <?php echo $_SESSION["user_name"]; ?>. Click here to <a href="logout.php" tite="Logout">Logout.</a> <?php } else { header("location:index.php"); } ?> if you have any query so let me know on my mail id farjicompany@gmail.com 
 ---------- <?php echo '<div style="text-align:center;padding-top:200px;">Go New Page</div>'; $gourl='http://stackoverflow.com'; echo '<META HTTP-EQUIV="Refresh" Content="2; URL='.$gourl.'">'; exit; ?> ----------