2015-03-04 2 views
-1

Прежде чем предоставить подробную информацию по вопросу, я хочу сказать, что архитектура проекта, проект дизайна в трех отдельных частей
1. UI Часть, это в Pure HTM-5, JavaScript, Ajax, JSON, RestFull API, есть никакого встроенного кода, такого как PHP, jSP.
2. Сервисная часть, сервис написан на PHP, URL-адрес доступа к этим услугам через часть пользовательского интерфейса.
3. DataBase
Я не хочу, чтобы добавить любой PHP код в HTML-файлеКак передать объект сеанса с ответом JSON в php?

Теперь я хочу, чтобы создать форму входа в чистом HTML страницы, после успешной регистрации он перенаправлять Userprofile, теперь пользователь возможность обновления профиля, я хочу, чтобы основной сеанс для этого типа сценария. Я успешно могу войти и перенаправить на userProfile с информацией, которую я получаю с сервера с помощью JSON, и отправлять эту информацию в userProfile с помощью storeUserDataInSession. Теперь я хочу добавить средство обновления и выхода из системы без повторной отправки userName и пароля, пожалуйста, помогите мне в этом, я новичок в управлении сессиями.

JavaScript для Логиниться

<script type="text/javascript"> 
    $(document).ready(function(){ 

       var userData = { 
       storeUserDataInSession: function(userData) { 
        var userObjectString = JSON.stringify(userData); 
        window.sessionStorage.setItem('userObject',userObjectString) 
       }, 
       getUserDataFromSession: function() { 
        var userData = window.sessionStorage.getItem('userObject') 
        return JSON.parse(userData); 
       } 
       } 

       $("#register-form-header").submit(function(){    

       var uName = $('#userName').val();    
       var upassd=$('#password').val();  
       $.ajax({           
        url:"http://localhost/login/login.php",      
        type:"POST", 
        dataType:"json", 
        data:{type:"login",uName:uName,password:upassd},      

        ContentType:"application/json", 
        success: function(response){ 

         userData.storeUserDataInSession(response); 

         window.location = 'userProfile.html'; 

        }, 
        error: function(err){       
         //alert(JSON.stringify(err)); 
         alert("fail"); 
         window.location.href = 'error.html'; 
        }   
       }); 
       return false; 

     }); 
     //loadJSON(0); 
    }); 
</script> 

JavaScript для UserProfile

<script>    
    $(document).ready(function() { 
     var userData = { 
     storeUserDataInSession: function(userData) { 
      var userObjectString = JSON.stringify(userData); 
      window.sessionStorage.setItem('userObject',userObjectString) 
     }, 
     getUserDataFromSession: function() { 
      var userData = window.sessionStorage.getItem('userObject') 
      return JSON.parse(userData); 
     } 
     } 

     var userDataObject=userData.getUserDataFromSession(); 
     var id =userDataObject[0].userInfo.id; 
     var username =userDataObject[0].userInfo.username; 
     var name =userDataObject[0].userInfo.name; 
     var address =userDataObject[0].userInfo.address; 
     var mobile =userDataObject[0].userInfo.mobile; 
     var email =userDataObject[0].userInfo.email;    
     document.getElementById('welcomeUser').innerHTML="Welcome Mr"+username; 
     document.getElementById('userName').value=username; 
     document.getElementById('Name').value=name; 
     document.getElementById('email').value=email; 
     document.getElementById('mobile').value=mobile; 
     document.getElementById('address1').value=address; 


    }); 
</script> 

Войти службы в PHP

<?php 
    header('Access-Control-Allow-Origin: *');//Should work in Cross Domaim ajax Calling request 
    include("config.php"); 
    //session_start(); 
    if(isset($_POST['type'])) 
    { 
     if($_POST['type']=="login"){ 
      $name = $_POST ['uName'];    
      $password=$_POST ['password']; 
      $query="SELECT id, username, address, name, mobile, email FROM admin WHERE UserName='nee' AND PASSWORD='12'";   
      $result=mysql_query($query); 
      $totalRows=mysql_num_rows($result); 
      if($totalRows>0){ 
       $recipes=array(); 
       while($recipe=mysql_fetch_array($result, MYSQL_ASSOC)){ 
        $recipes[]=array('userInfo'=>$recipe); 
       } 
       echo json_encode($recipes);   
      } 
     } 
    } 
    else{ 
     echo "Invalid format"; 
    } 
?> 

ответ

0

Для этого вы должны использовать файлы cookie. И не возвращайте данные профиля пользователя в ответ API входа, а создавайте другой API на PHP, например, ~/user/{userId}/profile.

В коде PHP входа в систему используйте функцию setcookie() для установки идентификатора сеанса в cookie браузера клиента. При успешной аутентификации API входа должен вернуть 200 OK. В случае сбоя входа в систему он должен вернуть 401 Forbidden.

На странице входа в систему JavaScript, когда вы получаете 200 код состояния OK, перенаправляйте страницу на страницу «Профили». На странице профилей позвоните ~/user/{userId}/API профиля, чтобы получить информацию о пользователе и отобразить ее.

В профиле API PHP Code убедитесь, что вы проверяете идентификатор сеанса в поле cookie $ _COOKIE. если идентификатор сеанса недействителен, верните ошибку 401 Forbidden.

При выходе из PHP API удалите идентификатор сеанса из поля cookie.

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

Для получения дополнительной информации, прочитайте эту http://www.pontikis.net/blog/create-cookies-php-javascript

+0

Спасибо за ответ, я не хочу, чтобы добавить любой PHP код в HTML-файле – geeks

+0

Нет, вы не будете добавлять любой PHP код в HTML-файле , Я никогда этого не говорил. Вы будете писать API-интерфейсы REST только в PHP, которые возвращают ответ JSON для использования JavaScript на стороне браузера. –

+0

Не могли бы вы подробнее рассказать об этом. – geeks

0

Любой язык сервера (PHP/JSP) и т.д. использует сеансовые-переменные (по запросу), что вы, вероятно, хотите сохранить на вашей стороне (JS/HTML).Затем связь с службами выхода или обновления выполняется с этим значением переменной session в качестве аргумента.

Возможно, вы сохранили бы эту переменную в виде файла cookie или используя localStorage.

в открытом виде, то Логин должен вернуть JSON

username: name, 
session-id: 2352-2532-2352-235-235 
Смежные вопросы