2015-07-12 3 views
3

Привет У меня есть controllerLoginUsu.php:Как я могу начать сеанс и перенаправить в php?

<?php 

require "dao/daoLoginUsu.php"; 

class LoginUsuario{ 

    public function setDatos($aInput) { 

     $obj = json_decode($aInput, true); 

     $Dao = new daoLoginUsuario(); 
     $Dao->setDataDato($obj); 

     $msj = $Dao->setDataDato($obj); 


     if($msj === 'si'){ 
     return $msj;  
     }else{ 
     return $msj; 
     } 
    } 
} 
?> 

Ну, в переменной $msj я получаю «си» или «нет», то есть ответ на вопрос.

Если $msj это «си» мне нужно начать сеанс и перенаправлять http://localhost:8080/formulario_web/formulario/formulario_lazos.html

И мне нужно видеть formulario_lazos.html только если начать сеанс:

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

    <head> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1"> 
     <link rel="stylesheet" type ="text/css" href="css/bootstrap.css"> 
     <link rel="stylesheet" type ="text/css" href="css_propio/boostrap.estilo.css"> 

     <link rel="stylesheet" type ="text/css" href="css_propio/boostrap.estilo.datepicker.css"> 
     <link rel="stylesheet" type ="text/css" href="css_propio/bootstrap.old.datepicker.css"> 

     <link rel="stylesheet" type ="text/css" href="css/boostrap.datepicker.css"> 
     <link rel="stylesheet" type ="text/css" href="css/bootstrap.min.css"> 
     <link rel="stylesheet" type ="text/css" media="all" href="css/bootstrap-select.min.css"> 

     <title>FORMULARIO</title> 
    </head> 

<body> 



     <div id="main_container_id"> 

       <!--INICIO ENCABEZADO--> 
       <div class="container-fluid" id="encabezado_container_id"></div> 
       <!--FIN ENCABEZADO--> 

       <!--INICIO CONTENEDOR OBLIGATORIO--> 
       <div id="tarea_container_id"></div> 
       <!--FIN CONTENEDOR OBLIGATORIO--> 

       <!--INICIO CONTENEDOR INFORMACION DE REGISTRO--> 
       <div class="container" id="informacion_de_registro_container_id"></div> 
       <!--FIN CONTENEDOR INFORMACION DE REGISTRO--> 

       <!--INICIO MODAL INGRESAR NUEVA TAREA--> 
       <div id="modal_ingresar_tarea_id" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel"></div> 
       <!--FIN MODAL INGRESAR NUEVA TAREA-->  

       <!--INICIO MODAL DESCRIPCION TAREA--> 
       <div id="modal_descripcion_tarea_id" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModal3Label"></div> 
       <!--FIN MODAL INGRESAR NUEVA TAREA-->   

       <!--INICIO MODAL HISTORIAL--> 
       <div id="modal_historial_tarea_id" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModal5Label"></div> 
       <!--FIN MODAL HISTORIAL-->   

       <!--INICIO MODAL ELIMINAR TAREA--> 
       <div id="modal_eliminar_tarea_id" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"></div> 
       <!--FIN MODAL ELIMINAR TAREA--> 

       <!--INICIO MODAL SELECCIONAR UNA TAREA--> 
       <div id="modal_seleccionar_tarea_id" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModal2Label"></div> 
       <!--FIN MODAL ELIMINAR TAREA-->    

       <!--INICIO MODAL ELIMINAR TAREA--> 
       <div id="modal_descripcion_problema_id" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModal4Label"></div> 
       <!--FIN MODAL ELIMINAR TAREA-->       
     </div> 





<!--JQUERY--> 
<script src="js/jquery-1.11.2.min.js"></script>  
<script src="js/bootstrap.js"></script> 
<script src="js/bootstrap-select.min.js"></script> 
<script src="js/datepicker.js"></script> 


<script src="js_propio/bootstrap-datepicker.js"></script> 
<script src="js_propio/bootstrap-selectpicker.js"></script> 
<script type="text/javascript" src="choona.js/choona.js"></script> 
<script type="text/javascript" src="js/head.load.js"></script> 
<script src="modulos/MainTarea.js"></script> 

<script type="text/javascript"> 

$(document).ready(function() { 

choona.startApp({ 
id : "main_container_id", 
module : MainTarea, 
config : { 
'urlBase' : '' 
} 
}); 
}); 

</script> 
<!--FIN JQUERY--> 

</body> 
</html> 

Я не знаю, как я это правильно. Извините мой английский.

Редактировать: Мне всегда нужно вернуть $ msj.

ответ

1

Для начала нужно создать formulario_lazos.html файл .php, чтобы использовать в нем PHP-код.

В случае, если $msg == "si" необходимо использовать session_start(), чтобы начать сеанс, используйте header("Location: ...") для перенаправления на вашу страницу. Вы можете прикрепить $msg по ссылке в месте и использовать его в дальнейшем в целевой странице с помощью $_GET

 <?php 

     require "dao/daoLoginUsu.php"; 

     class LoginUsuario{ 

public function setDatos($aInput) { 

    $obj = json_decode($aInput, true); 

    $Dao = new daoLoginUsuario(); 
    $Dao->setDataDato($obj); 

    $msj = $Dao->setDataDato($obj); 


    if($msj === 'si'){ 
    session_start(); 
    header('Location: http://localhost:8080/formulario_web 
    /formulario/formulario_lazos.php?msg='.$msg); 

    }else{ 
    header('Locarion: another_location.html'); 
    } 
     } 
    } 
    ?> 

Внутри formulario_lazos.php, вы проверяете, если сеанс был запущен, добавив PHP блок в верхней части HTML код где вы убедитесь, что состояние сеанса не является NONE, если так вы перенаправить на другую страницу:

 <?php 

    if (session_status() == PHP_SESSION_NONE) { 
header('Location: another_page.php'); 
    } 

echo $_GET['msg']; 
    ?> 
0

Попробуйте это: в controllerLoginUsu.php

<?php 

require "dao/daoLoginUsu.php"; 

class LoginUsuario{ 

    public function setDatos($aInput) { 

     $obj = json_decode($aInput, true); 

     $Dao = new daoLoginUsuario(); 
     $Dao->setDataDato($obj); 

     $msj = $Dao->setDataDato($obj); 


     if($msj === 'si'){ 
     if(empty(session_id())) //if not started we start it 
      session_start(); 
     header('Location: http://localhost:8080/formulario_web/formulario/formulario_lazos.php');  
     }else{ 
     return $msj; 
     } 
    } 
} 
?> 

Затем сделайте formulario_lazos в PHP вместо HTML файл, как нам нужно будет проверить в начале сессии. Просто поместите этот код в самом начале файла

if(empty(session_id())) 
    exit('No direct url access'); 

Так что этот путь каждый раз, когда кто-то пытается открыть formulario_lazos.php мы проверим если мы имеем открытую сессию и показать это, только если у нас есть.

1

Пример того, как вы можете это сделать:

<?php 
session_start(); 
if ($msj === 'si') { 
    $_SESSION['msj'] = "si"; 
    return $msj; 
    header("Location: /formulario_lazos.html"); 
    exit; // Exits the script, redirecting the user to the page above 
} 

и в вашем formulario_lazos.html вам нужно

<?php 
    session_start(); 
    if ($_SESSION['msj'] == "si") { 
?> 
<!-- PUT YOUR HTML CODE FROM formulario_lazos.html HERE --> 
<?php 
    } else { 
     echo "No session was set, you can't read this page!"; 
    } 
?> 

Помните, что когда вы используете header(Location: ...); вы не можете иметь никаких выходов (пробелы, HTML или echo в PHP) до header, иначе это не сработает - и добавьте предупреждение PHP в error_log. Если вам нужно перенаправить после выходов, вам понадобится другой способ перенаправления пользователя. То же самое относится и к session_start(); - его нужно вызывать перед любым выходом (это нормально, нет причин, по которым вы могли бы его поместить позже, просто положите его после открытия вашего PHP-тега).

Кроме того, ваш файл formulario_lazos.html должен быть файлом .php (не .html), если вам нужно использовать PHP внутри этого файла.

+0

Эй! .. это работает, если я перейду на formulario_lazos.php и не буду работать, если я не начну сессию, но я не могу перенаправить. Я еще не очень хорошо понимаю, у меня есть это: session_start(); if ($ msj === 'si') { $ _SESSION ['msj'] = "si"; return $ msj; header («Местоположение: http: // localhost: 8080/formulario_web/formulario/formulario_lazos.php»); выход; } – Jeanbf

+0

Конечно, вы должны 'session_start();' в _both_ файлах. Кроме того, ваш 'header (« Location: ... »);' должен быть вызван ** перед ** любым выходом (как я писал в своем сообщении). Нет HTML-кодов, нет эха в PHP - ничего. Если у вас это есть, вам нужно найти другое решение для перенаправления. – Qirel

Смежные вопросы