Этот код, приведенный ниже, отправляет правильный почтовый запрос. Проблема в том, что всякий раз, когда назначается неверное имя пользователя и пароль для 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
работает нормально, если я предоставляю имя пользователя и пароль вручную.
Поскольку страница " 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);
?>