PHP - cURL Cookie Problem

08/17/2011 21:29 ¿Freaky¿#1
Hallo,
ich möchte eine Chinesische Seite sogesagt übersetzen. Dazu habe ich mir gedacht das ich ein Formular auf Deutsch mache und den Post an die chinesische Seite schicke.
Leider bekomme ich eine Fehlermeldung von der Seite aus das die Cookies deaktiviert sind oder so.
Nun weiß ich nicht weiter. Cookies sind laut Script an und sollten eig. weitergegebene werden.
Könnt ihr mir helfen?
PHP Code:
<?PHP
session_start
();

if (isset(
$_POST['submit']) && ($_POST['submit'] == "Registrieren")){
_99nos_register($_POST['account'],$_POST['passwort'],$_POST['key'],$_POST['email'],$_POST['captcha']);
}

$iGetPage curl_get('http://99nos.com/member/reg.aspx',1,0);
$_SESSION["cookie"] = 'ASP.NET_SessionId='.middlestring ($iGetPage,'ASP.NET_SessionId=',' path=/');
$_SESSION['Key1'] = middlestring($iGetPage,'ctl00_ContentPlaceHolder_main_ScriptManager1_HiddenField&_TSM_CombinedScripts_=','"');
$_SESSION['Key2'] = middlestring($iGetPage,'__VIEWSTATE" value="','"');
$_SESSION['Key3'] = middlestring($iGetPage,'__EVENTVALIDATION" value="','"');
$_SESSION['Key4'] = middlestring($iGetPage,'ctl00$ContentPlaceHolder_main$HyperLink2" value="','"');
?>

<form method="POST">
Account: <input name="account" /> <br/>
Passwort: <input name="passwort" /> <br/>
Sicherheitskey: <input name="key" /> <br/>
E-Mail: <input name="email" /> <br/>
Captcha: <?PHP echo "<img src='data:image/jpg;base64,".base64_encode(curl_get('http://99nos.com/VerifyCode.aspx'01))."' />"?> <input name="captcha" /><br/>
<input type="submit" name="submit" value="Registrieren" />
</form>

<?PHP
function _99nos_register($iAccount,$iPasswort,$iKey,$iEMail,$iCaptcha){
$iSendPaket 'ctl00_ContentPlaceHolder_main_ScriptManager1_HiddenField='.urlencode($_SESSION['Key1']).'&__EVENTTARGET=&__EVENTARGUMENT=&__VIEWSTATE='.urlencode($_SESSION['Key2']).'&__EVENTVALIDATION='.urlencode($_SESSION['Key3']).'&ctl00%24ContentPlaceHolder_main%24UserID='.urlencode($iAccount).'&ctl00%24ContentPlaceHolder_main%24UserPWD='.urlencode($iPasswort).'&ctl00%24ContentPlaceHolder_main%24Re_UserPWD='.urlencode($iPasswort).'&ctl00%24ContentPlaceHolder_main%24SafePWD='.urlencode($iKey).'&ctl00%24ContentPlaceHolder_main%24Re_SafePWD='.urlencode($iKey).'&ctl00%24ContentPlaceHolder_main%24Email='.urlencode($iEMail).'&ctl00%24ContentPlaceHolder_main%24ValidateCode='.urlencode($iCaptcha).'&ctl00%24ContentPlaceHolder_main%24HyperLink2='.urlencode($_SESSION['Key4']);
$iPostPaket curl_post('http://99nos.com/member/reg.aspx',$iSendPaket,0,1);
echo 
$iPostPaket;
exit;
}

function 
curl_get($url$head$cook 0){
$ch curl_init($url);
curl_setopt($chCURLOPT_SSL_VERIFYPEER,0);
curl_setopt($chCURLOPT_SSL_VERIFYHOST,0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION,1);
curl_setopt($chCURLOPT_HEADER$head);
if(
$cook == 1){
curl_setopt($chCURLOPT_COOKIE$_SESSION["cookie"]);
echo 
"<!--".$_SESSION['cookie']."-->";
}
return 
curl_exec($ch);
}

function 
curl_post($url$datas,$head$cook 0){
$ch curl_init($url);
curl_setopt($chCURLOPT_POST,1);
curl_setopt($chCURLOPT_POSTFIELDS$datas);
curl_setopt($chCURLOPT_HEADER$head);
curl_setopt($chCURLOPT_USERAGENT"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14");
if(
$cook == 1){
$ioption curl_setopt($chCURLOPT_COOKIE$_SESSION["cookie"]);
echo 
"<!--".$_SESSION['cookie']."-->";
}
curl_setopt($chCURLOPT_SSL_VERIFYPEER,0);
curl_setopt($chCURLOPT_SSL_VERIFYHOST,0);
curl_setopt($chCURLOPT_RETURNTRANSFER1);
curl_setopt($chCURLOPT_FOLLOWLOCATION,1);
curl_setopt($chCURLOPT_HEADER1);
return 
curl_exec($ch);
}

function 
middlestring($string,$start,$stop){
$pos strpos($string,$start)+strlen($start);
$retstr substr($string,$pos);
$pos strpos($retstr,$stop);
$retstr substr($retstr,0,$pos);
return 
$retstr;
}
?>
Ich würde mich sehr freuen wenn ihr mir helfen könntet, 2 PHP Foren konnten dies leider nicht :(
mfg Freaky
08/18/2011 10:51 Menan#2
Ich frag mich, wieso du hier:

PHP Code:
function curl_get($url$head$cook 0
$cook = 0 setzt, da sie ja beim aufruf der Funktion so oder so auf 1 oder 0 gesetzt wird...
08/18/2011 14:00 ¿Freaky¿#3
Naja, es waren fertige Funktionen die ich von einem Kumpel bekommen habe.
Dort wurde $cook auf 0 gesetzt weil z.B. ich manchmal Faul bin und den Cookie nicht angebe. Und deswegen soll keine Fehlermeldung kommen etc.
Aber das hilft mir jetzt bei meinem Problem nicht gerade weiter :(
08/18/2011 14:48 Menan#4
Eventuell musst du noch mehr cookies übergeben als die Session Id...

Edit ich glaube ich hab da was gefunden...

Du hast ja am Anfang des Scripts eine Abfrage, ob "abgesendet" wurde.

Allerdings holst du dir beim ersten Aufrufen des Scripts die Cookies etc. dann kommt der submit und er holt sich erneut die Cookies...

eventuell liegt es daran, dass du dann 2 verschiedene Cookies bzw. die Cookies dann falsch / ungültig sind..

Ich könnte mir vorstellen, dass es eventuell daran liegt...
08/18/2011 15:22 ¿Freaky¿#5
Ja er holt sich erneut die Cookies aber nachdem er den Post abgegeben hat...
Ich setze ja nicht einfach so den die Abfrage über das erneute Cookie setzen :P

Aber wenn du das Script ausprobiert hättest, dann würdest du sehen was man zurück bekommt. Die Seite sagt irgend wie das die Cookies deaktiviert sind oder so (ist auf Chinesisch >.>).
08/18/2011 15:39 Menan#6
Ich hab das Script ausprobiert, eventuell werden auch nach der Registrierung neue Cookies gesetzt, die du erneut abfragen musst und weil es eben die neuen Cookies nicht setzen kann meint es, dass Cookies deaktiviert sind.
08/19/2011 03:03 ¿Freaky¿#7
Naja, beim Sniffen waren bei mir die Cookies von Anfang bis Ende gleich :(