curl liefert weiße Seite zurück?

Extremefall

Mitglied
Hallo,
ich habe folgendes Problem: curl liefert bei mir eine weiße (leere) Seite zurück. Mein Code:
PHP:
<?php    
function curl($url){
    $go = curl_init($url);
    curl_setopt ($go, CURLOPT_URL, $url);
    //follow on location problems
     
    if (ini_get('open_basedir') == '' AND ini_get('safe_mode' == 'Off')){
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt ($go, CURLOPT_POST, 1);
curl_setopt($go, CURLOPT_HEADER, 0);
curl_setopt($go, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($go, CURLOPT_COOKIEFILE, "cookie.txt");
$arrSubmit = "ctl02$txtBenutzername=xxxx&ctl02$txtPasswort=xxxxxx&ctl02$btnLogin=weiter";
curl_setopt($go, CURLOPT_POSTFIELDS, $arrSubmit);
    curl_setopt ($go, CURLOPT_FOLLOWLOCATION, $l);
     
    $syn = curl_exec($go);
     
    }else{
     
    $syn = curl_redir_exec($go);
     
    }
     
    curl_close($go);
    return $syn;
    }
     
    //follow on location problems workaround
     
    function curl_redir_exec($ch)
     
    {
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     curl_setopt ($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt");
$arrSubmit = "ctl02$txtBenutzername=xxxxxxxxx&ctl02$txtPasswort=xxxxxxxxx&ctl02$btnLogin=weiter&__VIEWSTATE=/wEPDwULLTEwODU4OTkxMzRkZJameM6ksrAXGiqwwlYvX80NgqHL&__EVENTVALIDATION=/wEWBALAo9uXCgK10rnVAQLLus+1BQLpvY+ZD9v3JTJTdsdZzFD3l2npiyDZyqLc";
curl_setopt($ch, CURLOPT_POSTFIELDS, $arrSubmit);
    static $curl_loops = 0;
     
    static $curl_max_loops = 20;
     
    if ($curl_loops++>= $curl_max_loops)
     
    {
     
    $curl_loops = 0;
     
    return FALSE;
     
    }
     
    curl_setopt($ch, CURLOPT_HEADER, true);
     
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
    $data = curl_exec($ch);
     
    list($header, $data) = explode("\n\n", $data, 2);
     
    $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
     
    if ($http_code == 301 || $http_code == 302)
     
    {
     
    $matches = array();
     
    preg_match('/Location:(.*?)\n/', $header, $matches);
     
    $url = @parse_url(trim(array_pop($matches)));
     
    if (!$url)
     
    {
     
    //couldn't process the url to redirect to
     
    $curl_loops = 0;
     
    return $data;
     
    }
     
    $last_url = parse_url(curl_getinfo($ch, CURLINFO_EFFECTIVE_URL));
     
    if (!$url['scheme'])
     
    $url['scheme'] = $last_url['scheme'];
     
    if (!$url['host'])
     
    $url['host'] = $last_url['host'];
     
    if (!$url['path'])
     
    $url['path'] = $last_url['path'];
     
    $new_url = $url['scheme'] . '://' . $url['host'] . $url['path'] . ($url['query']?'?'.$url['query']:'');
     
    curl_setopt($ch, CURLOPT_URL, $new_url);
     
    return curl_redir_exec($ch);
     
    } else {
     
    $curl_loops=0;
     
    return $data;
     
    }
     
    }

$html = curl("https://light.dsbcontrol.de/DSBlightWebsite/(S(zidzvunllqa5m2551nrui532))/Homepage/IFrame.aspx?ID=b1156653-7c27-461a-bb5f-65683ff4aeaf&Width=834&Height=472");
echo $html;
?>
Das ganze wurde an den HTML Code angepasst.
HTML:
<form name="form1" method="post" action="IFrame.aspx?ID=b1156653-7c27-461a-bb5f-65683ff4aeaf&amp;Width=834&amp;Height=472&amp;MyDate=0" id="form1">
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwULLTEwODU4OTkxMzRkZJameM6ksrAXGiqwwlYvX80NgqHL" />
<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" value="/wEWBALAo9uXCgK10rnVAQLLus+1BQLpvY+ZD9v3JTJTdsdZzFD3l2npiyDZyqLc" />
<input name="ctl02$txtBenutzername" type="text" id="ctl02_txtBenutzername" style="width:200px;" />
<input name="ctl02$txtPasswort" type="password" id="ctl02_txtPasswort" style="width:200px;" />
<input type="submit" name="ctl02$btnLogin" value="weiter" id="ctl02_btnLogin" style="width:200px;" />

Hier noch einmal die dazugehörige Variablendeklaration:
PHP:
$arrSubmit = "ctl02$txtBenutzername=xxxxxxx&ctl02$txtPasswort=xxxxxxxxxx&ctl02$btnLogin=weiter&__VIEWSTATE=/wEPDwULLTEwODU4OTkxMzRkZJameM6ksrAXGiqwwlYvX80NgqHL&__EVENTVALIDATION=/wEWBALAo9uXCgK10rnVAQLLus+1BQLpvY+ZD9v3JTJTdsdZzFD3l2npiyDZyqLc";
$html = curl("https://light.dsbcontrol.de/DSBlightWebsite/(S(zidzvunllqa5m2551nrui532))/Homepage/IFrame.aspx?ID=b1156653-7c27-461a-bb5f-65683ff4aeaf&Width=834&Height=472");
Wisst ihr, wo der Fehler liegt und wie ich den Inhalt erhalte? Es handelt sich um einen Login.

Ich wäre für jede Hilfe dankbar.
 
Hi,

evtl ist bei dir die library für curl nicht installiert.
Bei meinem Debian heisst das Paket "php5-curl".

Gruß
BK
 
sollte:
PHP:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);

nicht so heissen:
PHP:
curl_setopt($go, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($go, CURLOPT_SSL_VERIFYHOST, 0);

Du hast $ch nicht definiert, dieses stammt vermutlich aus dem Manual.
 
Zurück