Как получить / Перенаправить на следующую страницу после отправки запроса с помощью cURL в PHP?

0

Этот код, приведенный ниже, отправляет правильный почтовый запрос. Проблема в том, что всякий раз, когда назначается неверное имя пользователя и пароль для uname и pword соответственно, отображается правильный вывод, на странице " singin1.php " с сообщением " Wrong Username or Password " (сохраняется в $result), но при правильном имени пользователя и пароле, он показал мне ту же страницу signin1.php. Он не показывает мне авторизованный экран, который я должен получить после входа в систему.

<?php
//set POST variables
$url = 'http://computerinfo.in/school/signin1.php';

$fields = array(
                        'uname' => 'username',
            'pword' => 'password',
            'submt' => 'Submit'
                );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string[]= $key.'='.$value;}
$fields_items = implode ('&', $fields_string);


//open connection
$ch = curl_init();
//fname%3Dasdf%26lname%3Dsdafasdf%26lolz%3DSubmit
//set the url, number of POST vars, POST data

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_items);

//execute post
$result = curl_exec($ch);
echo "<br>Field Item= "."<br>";
echo $result."=Result"."</br>";


echo curl_errno($ch) . '<br>' . 
            curl_error($ch);

//close connection
curl_close($ch);

?>

Я хочу знать, не хватает ли я чего-то, чтобы получить следующий экран, который я должен увидеть после обычного входа. Вышеприведенный код присутствует на http://computerinfo.in/school/test.php и код с правильным именем пользователя и пароль присутствует на странице http://computerinfo.in/school/test1.php

и ссылка на странице входа в систему - http://computerinfo.in/school/signin1.php

Структура signin.php

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

        if(uname && pword are correct)
        {
            //creating session using session_start();  and redirection using header;
        }
        else
        {           
            $message="Wrong Username or Password";
        }

signin.php работает нормально, если я предоставляю имя пользователя и пароль вручную.

Теги:
curl

1 ответ

0
Лучший ответ

Поскольку страница " singin1.php " использует перенаправление с заголовком и сеансом. Обязательно сообщать cURL о переадресации и получать файлы cookie.

Чтобы выполнить перенаправление, следует добавить эту строку

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);

и для получения файлов cookie и создания сеанса.

curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE,  'cookie.txt');

Окончательный код для test.php будет выглядеть так:

<?php
//set POST variables
$url = 'http://computerinfo.in/school/signin1.php';

$fields = array(
                        'uname' => 'username',
            'pword' => 'password',
            'submt' => 'Submit'
                );

//url-ify the data for the POST
foreach($fields as $key=>$value) { $fields_string[]= $key.'='.$value;}
$fields_items = implode ('&', $fields_string);


//open connection
$ch = curl_init();

//set the url, number of POST vars, POST data

curl_setopt($ch,CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); //NEW LINE
curl_setopt($ch,CURLOPT_POSTFIELDS, $fields_items);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt'); //NEW LINE
curl_setopt($ch, CURLOPT_COOKIEFILE,  'cookie.txt'); // NEW LINE
//execute post
$result = curl_exec($ch);

echo "<br>Field Item= "."<br>";
echo $result."=Result"."</br>";


echo curl_errno($ch) . '<br>' . 
            curl_error($ch);
//close connection
curl_close($ch);

?>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню