Разместите учетные данные для входа и пароль на странице входа и оставайтесь в системе - PullRequest
0 голосов
/ 16 июня 2019

Я создал скрипт php, который отправляет данные имени пользователя и пароля в форму, связанную с базой данных (mySQLI), которая проверяет переданные данные и регистрирует пользователя. когда я использовал для ввода данных непосредственно из формы, он работает нормально. когда я отправляю через PHP-curl его, пропустив логин, но когда он перенаправляет на страницу входа в систему, он показывает ошибку, указывающую, что переменные сеанса не инициализированы. Есть ли какой-нибудь способ, которым я могу использовать либо сессионные куки-файлы, либо хранить куки-файлы с идентификатором сессии и так далее?

Сначала я попытался выполнить обычную передачу данных и работает, но после добавления кода php-curl он не работает, пробовал код из других вопросов и все еще существует проблема. Я получил идентификатор PHPSESSION, но не уверен, как его использовать для отправки сведений на серверную сторону для аутентификации того же пользователя, как он выглядит как система единого входа в системе

PHP-curl файл session_start ();

    $cookie="C:/xampp/htdocs/cookies.txt"; 
    $url="http://localhost/login.php";    


    $postFields = array('user'=> "2001",
    "pass"=> "qw12",
    "submit" => "submit" ); 
    echo $_COOKIE["PHPSESSID"];
    session_write_close();
    $ch = curl_init(); 
    curl_setopt ($ch, CURLOPT_URL, $url);
    curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, true);
    curl_setopt($ch, CURLOPT_VERBOSE, true);    
    curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt ($ch, CURLOPT_COOKIESESSION, 1); 
    curl_setopt ($ch, CURLOPT_POST, 1); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, http_build_query($postFields));
    curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
    curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie);
    curl_setopt ($ch, CURLOPT_REFERER, $url); 

    $response = curl_exec($ch);

    //echo $response;

    if(!$response){
        echo "logged out";
        }

        else{
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $cookie);
        curl_setopt ($ch, CURLOPT_URL, "http://localhost/loginSuccess.php"); 
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        $response = curl_exec($ch);
        echo $response; 

        }
    curl_close($ch);

после входа в систему он должен перенаправить на эту страницу, как он зарегистрирован это файл loggedin.php, в котором переменные сеанса остаются неопределенными

    <?php
    session_start();

    ?>

    <!DOCTYPE html>
    <html>
    <head>  
    <title>Log in</title>
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
    <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css" integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
    <style>
    .display-4 {
    font-size: 2.5rem;
    font-weight: 300;
    line-height: 1.2;
    }

    </style>

    </head>
    <body>

    <div>

    <nav class="navbar navbar-expand-lg navbar-light" style="background-color: #E74C3C; margin:0px" >
    <div ></div>
    <span class="navbar-brand text-light" >Uni details</span>
    <br> <br>
    </div>
    <?php 

    echo $_COOKIE["PHPSESSID"];

    if(isset($_SESSION['uid'])){

    echo '<div style="width: 62%;" ></div>';
    //login  echo '<span style=" color:white; margin-right: 10px;">'.$_SESSION['uid'].'</span>';
    echo '<form  action="databaseConnection/logout.php" method="POST">
    <button type="submit" name="submit" class="btn-dark " style="border-radius: 5px" >logout</button>
    </form>  ';
    }
    else{
    header("Location: login.php");
    }
    ?>
    </div>
    </nav>
    </div>
    <!--jumbotron-->
    <?php
    if($_SESSION['uid'] == 2001)
    {

    echo '<div class="jumbotron" align="left" style="text-indent: 6.5%; background-color: transparent">
    <img src="img/aau-logo.png" style="width:10%; height:10%;" alt="aau-logo">
    <h1 class="display-4" style="text-indent:6.5%; font-weight: 500">You are logged in as: </h1>
    <div class="container" style="text-indent:0%;">
    <ul class="list-group "> 
    <li class="list-group-item" style="font-weight:500; font-size: 25px;text-align:center"> Admin </li>
    </ul>
    <br> <br>
    <button><a href="sso.php">Moodle test page</a></button>
    </div> 
    </div>';
    }
    else{
    echo '<div class="jumbotron" align="left" style="text-indent: 6.5%; background-color: transparent">
    <img src="img/aau-logo.png" style="width:10%; height:10%;" alt="aau-logo">
    <h1 class="display-4" style="text-indent:6.5%; font-weight: 500">You are logged in as: </h1>
    <div class="container" style="text-indent:0%;">
    <ul class="list-group "> 
    <li class="list-group-item "> Student ID:';?> <?php echo  $_SESSION['uid']; ?> <?php echo ' </li>
    <br>
    <li class="list-group-item "> College:';?> <?php echo  $_SESSION['col'];  ?> <?php echo '</li>
    </ul>
    </div> 
    </div>';
    }
    ?>

Как и ожидалось, он должен пропустить вход в систему и держать меня в системе до выхода из системы или закрытия браузера. просто хочу оставаться в системе на всех веб-страницах в этом домене.

...