2015-12-02 46 views
1

我越來越沮喪。嘗試了一切從我的PHP頁面註銷用戶,但它不起作用的購物車仍然是滿的,用戶名仍然存在。我的網頁是關於網上購物的。登錄工作正常,我創建了一個註銷文件用下面的代碼嘗試了一切從我的PHP頁面註銷用戶,但它不工作購物車仍然充滿

session_start(); 
session_destroy(); 
header('Location: login.php'); 
exit; 

我登錄的代碼是:

// get Members table 
require './Model/Members.php'; 
$memberTable = new Members(); 


    if (isset($_POST['data'])) { 
     // take security precautions: filter all incoming data! 
     $email  = (isset($_POST['data']['email']))  ? strip_tags($_POST['data']['email'])  : ''; 
     $password = (isset($_POST['data']['password'])) ? strip_tags($_POST['data']['password']) : ''; 
     if ($email && $password) { 
      $result = $memberTable->loginByName($email, $password); 
      if ($result) { 
       // store user info in session 
       $_SESSION['membro'] = $result; 
       $_SESSION['login'] = TRUE; 


      } 


         else { 
       $_SESSION['login'] = FALSE; 

      } 
      // redirect back home 
      header('Location: ?page=paginaprincipal'); 
      exit; 
     } 
} 

從登錄頁面我的HTML是:

<div class="content"> 
    <br/> 
    <div class="product-list"> 

     <h2>Login</h2> 
     <br/> 

     <b>Por favor, entre a sua informacao.</b><br/><br/> 
     <form action="?page=login" method="POST"> 
      <p> 
       <label>Email: </label> 
       <input type="text" name="data[email]" /> 
      <p> 
      <p> 
       <label>Password: </label> 
       <input type="password" name="data[password]" /> 
      <p> 
      <p> 
       <input type="reset" name="data[clear]" value="Clear" class="button"/> 
       <input type="submit" name="data[submit]" value="Submit" class="button marL10"/> 
      <p> 
     </form> 
    </div><!-- product-list --> 
</div> 

請幫我以確定我做錯了什麼。我從這裏嘗試了很多不同的東西,但沒有一個可行,我需要儘快完成這項工作,這就是爲什麼我的失望:-(

回答

0

對於註銷頁面,這應該做到這一點。

session_start(); 

unset($_SESSION['membro']); 
unset($_SESSION['login']); 

/* cookies should be deleted when the session is destroyed anyway */ 
setcookie(session_id(), "", time() - 3600); 
session_unset(); 
session_destroy(); 

session_write_close(); 

session_start(); 
session_regenerate_id(true); 
exit(header('Location: login.php')); 

在回答您的意見,它仍然沒有工作,我重新寫了一段如下的代碼,並使用上面的代碼(雖然我仿效$memberTable->loginByName一些靜態值測試,它的工作。會議每次都完全被破壞,並且一個新的重新生成,所以我不確定問題在於註銷腳本。如果這種情況繼續失敗,可能需要查看cache-control headers正在設置什麼

<?php 

    require './Model/Members.php'; 
    $memberTable = new Members(); 


    if(isset($_POST['data'])) { 

     $data=$_POST['data']; 

     $email=isset($data['email']) && !empty($data['email']) ? trim(strip_tags(filter_var($data['email'], FILTER_SANITIZE_EMAIL))) : false; 
     $password=isset($data['password']) && !empty($data['password']) ? trim(strip_tags(filter_var($data['password'], FILTER_SANITIZE_STRING))) : false; 

     if ($email && $password) { 
      $result = $memberTable->loginByName($email, $password); 

      if ($result) { 
       $_SESSION['membro'] = $result; 
       $_SESSION['login'] = TRUE; 
      } else { 
       $_SESSION['login'] = FALSE; 
      } 
      exit(header('location: ?page=paginaprincipal')); 
     } 
    } 
?> 
+0

我已經放在了代碼,因爲它看起來像它的工作,但沒有發梗。然後,我會嘗試取消cookie設置,但沒有任何事情發生......它會變成別的,我做錯了,請幫助。 –

+0

我複製了你的代碼,並過去它是如何,但仍然無法註銷。看起來像我必須檢查我的標題:-(。 –

0

有什麼機會可以將某些東西存儲在cookie中?如果是這樣,請嘗試清除它們。

如何清除所有: how to delete all cookies of my website in php

小導:http://www.pontikis.net/blog/create-cookies-php-javascript

+0

我想知道同樣的事情。試着從你給的第一個鏈接的代碼,但沒有工作,我放置代碼後unset是好的?第二個鏈接://取消設置cookies if(isset($ _ SERVER ['HTTP_COOKIE'])){ $ cookies = explode(';',$ _SERVER ['HTTP_COOKIE']); foreach($ cookies as $ cookie ){ $ parts = explode('=',$ cookie); $ name = trim($ parts [0]); setcookie($ name,'',time() - 1000); setcookie($ name ,'',time() - 1000,'/'); } } –

+0

如果不是會話或cookie,它可能是js [localStorage](https://developer.mozilla.org/en/docs/ Web/API/Window/localStorage)。確保所有的coo kies會被正確刪除(例如,使用瀏覽器的開發工具)並檢查localStorage。此外,由於您知道您使用的特定shoppingcart庫的名稱,因此請嘗試在其文檔中進行搜索,或者更好地查看源代碼。至少,給我們一個鏈接到這個工具的存儲庫,所以我們可以做到這一點。 –

+0

檢查了開發工具中的本地存儲,但localstorage是空的,僅在我發現的cookie中打開會話PHPSESSID。 –

相關問題