בשרתים שעובדים עם IIS יש אופציה להשתמש בהזדהות מסוג BASIC ו DIGEST (יש עוד כמה סוגים שלא אפרט כאן, תוכלו לקרוא בויקיפדיה)
יצא לי לאחרונה לעבוד מול שרת כזה, כאשר אני מתחבר עם יוזר וסיסמא הכל עובד טוב, אבל כמובן שאני מריץ סקריפט PHP אכן יש בעיית הזדהות.
סה"כ מה שצריך זה לשולח את ה Headers הנכונים בצורה הבאה:
function startMyDigestAuth($username,$password)
{
$data=array("NAME"=>"VALUE"); //Data to send: can be for example: array("page"=>"data","val1"=>"tables","val2"=>"soccer");
$headers[] = 'Accept: */*'; //I`m not sure if we realy need it, I didn't try without yet.
$poster = curl_init($fullurl); //strating curl_init
//sending Headers
curl_setopt($poster, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($poster, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($poster, CURLOPT_TIMEOUT, 60);
curl_setopt($poster, CURLOPT_HTTPHEADER, $headers ); //the $headers
curl_setopt($poster, CURLOPT_HEADER, 0); //0 means that we don't want to see header output
curl_setopt($poster, CURLOPT_USERPWD, $username.":".$password); //sending username & password
curl_setopt($poster, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST); //DIGEST (there are more options)
curl_setopt($poster, CURLOPT_CUSTOMREQUEST, 'POST'); //Posting
curl_setopt($poster, CURLOPT_RETURNTRANSFER, true); //return data on curl_exec
curl_setopt($poster, CURLOPT_POSTFIELDS, $data); //send POST
$raw_response = curl_exec($poster); //execute
$httpcode = curl_getinfo($poster,CURLINFO_HTTP_CODE); //check what code we are getting: 200(OK) 401(FORBIDDEN) 404(NOT FOUND) etc , return integer
curl_close($poster); //close curl
return ($httpcode==200) "Cool we are OK":"Error code: $httpcode";
}
$username="OTHERDOMAIN\SomeUserName";
$password="ourPass123";
echo startMyDigestAuth($username,$password);
מדריך שמאוד עזר ודי פתר לי את הבעיה:
http://curl.haxx.se/mail/curlphp-2007-08/0030.html?

