2014-11-07 2 views
0

Этот код, указанный ниже, отправляет правильный почтовый запрос. Проблема заключается в том, что при назначении неверного имени пользователя и пароля на uname и pword соответственно отображается правильный вывод, который «singin1.php» с сообщением «Wrong Username or Password» (хранится в $result), но при правильном имени пользователя и пароле предоставляется мне то же самое «signin1.php» страница. Она не показывает мне санкционированный экран, который я должен получить после входа в систему.Как получить/Перенаправить на следующую страницу после отправки запроса на отправку с использованием cURL в 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 работает нормально, если я обеспечиваю имя пользователя и пароль вручную.

+0

код, вероятно, основывается на сеансах. Храните и используйте cookie cookie, сделайте первоначальный запрос, чтобы загрузить страницу с формой, получить файл cookie, использовать его с опубликованными данными. – Cheery

+0

Yups, я добавил абстрактный код для страницы signin1.php также в вопросе .... получить файлы cookie и использовать его с опубликованными данными ... можете ли вы дать подсказку, как это сделать, или любой учебник .... Я новичок в cURL. Спасибо – CyberBoy

+0

'и перенаправление с использованием заголовка;' вы должны сообщить CURL, чтобы следовать перенаправлению. 'curl_setopt ($ ch, CURLOPT_FOLLOWLOCATION, true);', но все же, чтобы работать с сеансами, вы должны хранить файлы cookie. – Cheery

ответ

0

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

Следовать переназначение, эта строка должна быть добавлена ​​

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); 

и принести печенье и создать сеанс.

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); 

?> 
Смежные вопросы