登录后仅重定向用户

时间:2016-07-13 09:15:50

标签: php html mysql database

我有一个搜索输入来搜索所需的主题。我能够显示相应的结果,我希望显示结果但是用户只能在登录时转到链接,否则显示消息框"您必须登录才能转到另一个页面&# 34 ;.这里的问题是我似乎根本无法显示错误消息。我想显示结果,即使用户没有或登录。只是指示他到另一页显示错误信息,他必须登录或他不能被指示

<form class="search">
                <div class="form-group input">
                <div class="icon-addon">
                <input type="text" name="type" class="st-search" id="search" placeholder="Search"  autocomplete="off" >
                <label for="email" class="glyphicon glyphicon-search" rel="tooltip" title="email"></label>
                </div>
                <h4 id="results-text">Showing: <b id="search-string">Output</b></h4>
                <ul id="results"></ul>                                  
        </div>      
</form>

find.php

<?php
$dbhost = "hostname";
$dbname = "databasename";
$dbuser = "root";
$dbpass = "";

global $task_db;

$task_db = new mysqli();
$task_db->connect($dbhost, $dbuser, $dbpass, $dbname);
$task_db->set_charset("utf8");

if ($task_db->connect_errno) {
    printf("You can't connect: %s\n", $task_db->connect_error);
    exit();
}
    session_start();
    $_SESSION['login'] = true;
    // If user is not logged in
    if(!$_SESSION['login']){
        $message = 'You are not logged in';
        echo $message;
   die;
    }
//if user is logged in, user can be redirected to the link. Something is not right here
else{
$html = '';
$html .= '<li class="result">';
$html .= '<a target="_blank" href="url">';
$html .= '<h3>name</h3>';

$html .= '</a>';
$html .= '</li>';

$search = preg_replace("/[^A-Za-z0-9]/", " ", $_POST['query']);
$search = $task_db->real_escape_string($search);

if (strlen($search) >= 1 && $search !== ' ') {
    $query = 'SELECT * FROM tablename WHERE columnname LIKE "%'.$search_string.'%"';
    $result = $task_db->query($query) or trigger_error($task_db->error."[$query]");
    while($results = $result->fetch_array()) {
        $result_array[] = $results;
    }
    if (isset($result_array)) {
        foreach ($result_array as $result) {
            $name = preg_replace("/".$search_string."/i", "<b class='highlight'>".$search."</b>", $result['subject_Name']);
            //display url
            $url = 'https://www.google.com/'.urlencode($result['subject_Name']).'&lang=en';
            $output = str_replace('name', $name, $html);
            $output = str_replace('url', $url, $output);
            echo($output);
        }
    }else{
        // No Results found
    }
}
}
?>

2 个答案:

答案 0 :(得分:0)

第一个session_start();应该是第一个命令 第二个

 $_SESSION['login'] = true;

将$ _SESSION [&#39; login&#39;]设置为true,以便

if(!$_SESSION['login']){

永远不会发生。

答案 1 :(得分:0)

是的,因为您设置了$_SESSION['login'] = true;
所以支票if (!$_SESSION['login']){永远不会成真。

你总能得到结果;

//$_SESSION['login'] = true;

当您的用户登录时设置$_SESSION['login'] = true;但不仅仅是if (!$_SESSION['login']){

之前