2017-07-04 16 views
-1

ここで初心者の質問は設定されましたが、設定されているsessionの設定を解除することは可能です。私が意味することは、データベースに接続するファイルconnection.phpがあり、それが各ページ/ファイルに含まれているということです。私は、ページは私がサインインしてきている開くと特定のページでのセッションの破棄と設定解除

私は、ユーザーがログインすることを余儀なくされるようにすることなくアクセスできるようにしたい1ページsearch.phpあります。だから、私はファイルを持っていることは

<?php 
include 'connection.php'; 

     // some code which perform search here 

?> 
<html> 
<head></head> 
<body> 
     search form here 
</body> 
</html> 

です私は記録されていないので、ページ。私が試したことは、セッションを置くことである右後の破壊接続

<?php 
include 'connection.php'; 
session_destroy(); 
     // some code which perform search here 

?> 

の含めるこれは助け、まだページに署名するために私をリダイレクトしません。私はこれを回避する可能性はありますか?

アップデート:私は、これはあなたのconnection.phpファイルで私がセッションをチェックして、保存し

<?php 
$request = $_REQUEST; 
if(!empty($request)) { 
    $_SESSION['login'] = false; 
    if (!empty($_REQUEST['email']) && !empty($_REQUEST['password'])) { 

     $password = md5($_REQUEST['password']); 

     $sql = "select users query"; 

     $result = $conn->query($sql); 

     if ($result->num_rows > 0) { 
      $row = $result->fetch_assoc(); 
      if ($row['type'] == 'admin' || $row['type'] == $_REQUEST['type']) { 
       $_SESSION['user']=[ 
        'id' => $row['id'], 
        'fname' => $row['fname'], 
        'email' => $row['email'], 
       ]; 
       $_SESSION['login'] = true; 
       if($_SESSION['user']['type'] == 'admin'){ 
        header('Location: Approval.php');die; 
       } 
      }else { 
        header('Location: signup.php');die; 
      } 
     } else { $error = "Wrong Email and/or Password or Account not acitvated. Please try again."; } 
    } 
} 
+0

いいえ、あなたはセッションの何か、またはセッションの完全なセッションを「アンセット」したくありません。あなたは、ユーザーがログインしているかどうか、そしてログインページにリダイレクトされていないかどうか、セッションを介してチェックするコードが必要です。この時点で、リクエストされたページが検索ページであるかどうかを確認する必要があります。その場合は、単純にログインページにリダイレクトしないでください。 – CBroe

+0

'__FILE__'定数を使用してファイル名を確認し、条件を作成することができます。 – vaso123

+0

コメントのためのThansk。私はこれを担当していると思うファイルを追加しました。あなたは私を少し助けてくれますか?この '$ _SESSION ['login'] = false;'を条件に入れる必要がありますか? – user5996816

答えて

1

であるあなたが好き除外したいファイル名を持つ配列が(行の前または後に、それを追加することができます$要求= $ _REQUEST;):

$file_excludes = array("search.php", "anotherfile.php"); 

そして、現在のファイルであることの実行を取得し、パスを分割する(!(場合行の前にそれを追加し、空($リクエスト)){):

$current_file = explode("/", __FILE__); 
私はより多くの情報があることを、今、別の提案された解決策をここ

if(!empty($request) && !in_array($current_file[count($current_file) - 1], $file_excludes)) { 

大丈夫です:

<?php 
$current_file = explode("/", __FILE__); 
include 'connection.php'; 

     // some code which perform search here 

?> 
<html> 
<head></head> 
<body> 
     search form here 
</body> 
</html> 

を、文修正IFを残す

if(!empty($request)) { 

へ:

その後、行を変更どこですか。したがって、search.phpファイル内の$current_fileを初期化するだけです。これは理にかなっていますか?

+0

これは私のconnection.phpファイルではありません。しかし、私はまだそれが適用されると思う。 – user5996816

+0

'if(!empty($ request)){'の前にログインファイルに上記の行を追加しましたが、依然として私はサインアップにリダイレクトします – user5996816

+0

'if(!empty($ request)){'を ' !空($要求)&&!in_array($現在のファイル[count($ current_file) - 1]、$ file_excludes)){'? –

関連する問題