הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 26-06-13, 15:36   # 1
Rebuilt
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jan 2013
הודעות: 54

Rebuilt לא מחובר  

עזרה| לא מצליח להתחבר לאתר באמצעות עוגיות בלבד [PHP]

שלום לכם.

בימים אלו אני כותב משהו לאתר מסויים ואני צריך להתחבר אליו מרחוק... החיבור של הסוקט עצמו עובד נפלא אך הבעיה היא ההתחברות למשתמש, אני מנסה לשלוח את העוגיות בהאדרים (headers) וזה עדיין לא עובד.

PHP קוד:
<?php

$soc 
socket_create(AF_INETSOCK_STREAM,SOL_TCP);
header('Content-type: text/html;charset=utf-8');
$t socket_connect($soc,  gethostbyname('www.some-site.co.il'),80);
if(!
$t){
    die(
socket_strerror(socket_last_error($soc)));
}
$request "GET /some-page.php?x=11111 HTTP/1.1\r\n";
$request .= "Host: www.some-site.co.il\r\n";
$request .= "Cookie: cookie1=cookie1Value\r\n";
$request .= "Cookie: cookie2=cookie2Value \r\n";
$request .= "Cookie: cookie3=cookie3Value\r\n";

$request .= "Connection: Close\r\n";
$request .= "\r\n";
socket_write($soc,$request);
ob_start();
$buffer '';
$html '';
while ((
$s socket_recv($soc$buffer2048MSG_WAITALL))>0) {
$html .= $buffer;
}
echo 
substr($html,  strpos($html,"\r\n\r\n"),strlen($html));
העוגיות של האתר עצמן מסווגות כHTTP ONLY אבל זה לא אמור להפריע מכיוון שזה נוגע לJS.

באמת שאשמח לעזרה בלהבין למה העוגיות האלו לא מחברות את המשתמש שלי לאתר עצמו.
תודה מראש!
  Reply With Quote
ישן 26-06-13, 22:40   # 2
kobisl
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
הודעות: 76

kobisl לא מחובר  

PHP קוד:
function httpPost($url,$post=array(),$cookies=array())
{
$optsCookies='';
foreach(
$cookies as $key => $val) {$optsCookies.="Cookie: {$key}={$val}\r\n";}
$opts = array(
'http'=>array(
'method' => 'POST'
,'header'=>"Accept-language: en\r\n" 
."Content-type: application/x-www-form-urlencoded\r\n" 
.$optsCookies
,'content'=>http_build_query($post)
)
);
$context stream_context_create($opts);
return 
file_get_contents($urlfalse$context);

מקווה שזה יעזור =]
  Reply With Quote
ישן 26-06-13, 22:54   # 3
zoharesh
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Dec 2007
הודעות: 600

zoharesh לא מחובר  

יש ספרייה במיוחד לדברים כאלה.
cURL תקרא עליה.
__________________


HIGHDESIGN.co.il עיצוב ובניית אתרים.
  Reply With Quote
ישן 27-06-13, 09:21   # 4
Rebuilt
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jan 2013
הודעות: 54

Rebuilt לא מחובר  

ציטוט:
נכתב במקור על ידי zoharesh צפה בהודעה
יש ספרייה במיוחד לדברים כאלה.
cURL תקרא עליה.
שמעתי על הספריה הזאת... איך היא יכולה לעזור לי בנושא?

ציטוט:
נכתב במקור על ידי kobisl צפה בהודעה
PHP קוד:
function httpPost($url,$post=array(),$cookies=array())
{
$optsCookies='';
foreach(
$cookies as $key => $val) {$optsCookies.="Cookie: {$key}={$val}\r\n";}
$opts = array(
'http'=>array(
'method' => 'POST'
,'header'=>"Accept-language: en\r\n" 
."Content-type: application/x-www-form-urlencoded\r\n" 
.$optsCookies
,'content'=>http_build_query($post)
)
);
$context stream_context_create($opts);
return 
file_get_contents($urlfalse$context);

מקווה שזה יעזור =]
תודה רבה, אתמול בלילה התחלתי לעבוד על מחלקת WEBStream שבין היתר תעשה את זה, במידה וזה לא יעבוד אנסה את מה שכתבת.
רק משהו שלא הבנתי למה בAccept lan כתבת en? אני עשיתי את זה עם he.
אשמח לתשובה.

חלק מהקוד:
PHP קוד:
class WEBStream {

    private 
$socket;
    private 
$username;
    private 
$password;
    private 
$headers;
    private 
$cookies;
    private 
$web;

    public function 
__construct($web,$username$password) {
        
$this->web $web;
        
$this->username $username;
        
$this->password $password;
        
$this->socket socket_create(AF_INETSOCK_STREAMSOL_TCP);
        
$t socket_connect($this->socketgethostbyname($this->web), 80);
        if (!
$t) {
            die(
'Error at INIT of WEBStream class: ' socket_strerror(socket_last_error($this->socket)));
        }
        
$this->headers "Accept-Language: he-IL,he;\r\nConnection: Keep-Alive\r\nHost: {$this->web}\r\nUser-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36\r\n";
    }

    private function 
_REQUEST($method$URI$content) {
        
$xcookies = array();
            foreach (
$this->cookies as $key => $value) {
                
$xcookies[] = "$key=$value";
            }
            
$xcookies implode($xcookies'; ');
        
$request "$method /$URI HTTP/1.1\r\nCookie: $xcookies\r\n{$this->headers}\r\n$content";
        
socket_write($this->socket$requeststrlen($request));
    } 
ממה שאתה רואה, זה יכול לעבוד בינתיים? זאת רק טיוטה ועוד לא מוכנה להרצה... אשמח לתשובה,
תודה מראש!

Last edited by Rebuilt; 27-06-13 at 09:24..
  Reply With Quote
ישן 27-06-13, 10:12   # 5
kobisl
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jan 2006
הודעות: 76

kobisl לא מחובר  

אני לא מבין למה אתה מתעקש לפתוח ולטפל בסוקט בזמן שיש פונקציות שנועדו לעשות את העבודה בשבילך כמו file_get_contents וכמו cURL .
אני מציע לך בכל זאת לנסות את הפונקציה שכתבתי לך כי היא עובדת מצויין.
  Reply With Quote
ישן 27-06-13, 10:48   # 6
Rebuilt
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jan 2013
הודעות: 54

Rebuilt לא מחובר  

ציטוט:
נכתב במקור על ידי kobisl צפה בהודעה
אני לא מבין למה אתה מתעקש לפתוח ולטפל בסוקט בזמן שיש פונקציות שנועדו לעשות את העבודה בשבילך כמו file_get_contents וכמו cURL .
אני מציע לך בכל זאת לנסות את הפונקציה שכתבתי לך כי היא עובדת מצויין.
זו לא התעקשות מהבחינה הזו... אני גם רוצה לבחון את רמת הביצוע שלי בOOP בסוגיות הללו.
קודם כל שוב, תודה רבה על הפונקציה, אעזר בה במידה ואראה לנכון. (לא שאני עושה לך טובה בכך..)

אשמח אם בכל זאת תרשום לי מה לא בסדר בקוד שלי... זה לא יעבוד באותה המידה? הקוד לא יעיל?
  Reply With Quote
ישן 29-06-13, 10:30   # 7
אדיר
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Mar 2008
מיקום: אשקלון
הודעות: 1,714

אדיר לא מחובר  

קוד:
Cookie: cookie1=a;cookie2=b;cookie3=c;
  Reply With Quote
ישן 29-06-13, 12:16   # 8
zoharesh
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Dec 2007
הודעות: 600

zoharesh לא מחובר  

במקומך (אם כבר OOP) הייתי יוצר פונקציה בקלאס שהתפקיד שלה זה להוסיף header ככה שבמקום השורה המבולגנת הזו:
PHP קוד:
$this->headers "Accept-Language: he-IL,he;\r\nConnection: Keep-Alive\r\nHost: {$this->web}\r\nUser-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36\r\n"
יהיה לך משהו מסודר יותר בסגנון הזה:
PHP קוד:
$myClass->addHeader('Accept-Language: he-IL,he');
$myClass->addHeader('Host: www.hosts.co.il');
$myClass->addHeader('Accept-Encoding: gzip, deflate');
$myClass->addHeader('Connection: Keep-Alive'); 
כי עד עכשיו הקוד שלך נראה...סלט
__________________


HIGHDESIGN.co.il עיצוב ובניית אתרים.
  Reply With Quote
ישן 29-06-13, 20:50   # 9
איציק ברבי
עסק רשום [?]
 
מיני פרופיל
תאריך הצטרפות: Feb 2011
הודעות: 970

איציק ברבי לא מחובר  

היי, אתה יכול לעבוד בOOP גם בcURL היא מובנת לדברים האלה, חבל על ניצול המשאבים של השרת שלך.
__________________

איציק ברבי - שירות לקוחות
כתובת אתר: http://build-net.co.il/
איימל: Support@build-net.co.il
טלפון: 052-3937296.
  Reply With Quote
ישן 01-07-13, 21:38   # 10
Rebuilt
חבר בקהילה
 
מיני פרופיל
תאריך הצטרפות: Jan 2013
הודעות: 54

Rebuilt לא מחובר  

ציטוט:
נכתב במקור על ידי אדיר צפה בהודעה
קוד:
Cookie: cookie1=a;cookie2=b;cookie3=c;
תודה לך, הסתדרתי כבר

ציטוט:
נכתב במקור על ידי zoharesh צפה בהודעה
במקומך (אם כבר OOP) הייתי יוצר פונקציה בקלאס שהתפקיד שלה זה להוסיף header ככה שבמקום השורה המבולגנת הזו:
PHP קוד:
$this->headers "Accept-Language: he-IL,he;\r\nConnection: Keep-Alive\r\nHost: {$this->web}\r\nUser-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36\r\n"
יהיה לך משהו מסודר יותר בסגנון הזה:
PHP קוד:
$myClass->addHeader('Accept-Language: he-IL,he');
$myClass->addHeader('Host: www.hosts.co.il');
$myClass->addHeader('Accept-Encoding: gzip, deflate');
$myClass->addHeader('Connection: Keep-Alive'); 
כי עד עכשיו הקוד שלך נראה...סלט
שכתבתי את הקוד לפחות 4 פעמים ועכשיו הוא נראה יחסית טוב ולא מסורבל, תודה על ההצעה!


ציטוט:
נכתב במקור על ידי איציק ברבי צפה בהודעה
היי, אתה יכול לעבוד בOOP גם בcURL היא מובנת לדברים האלה, חבל על ניצול המשאבים של השרת שלך.
אני זה שקניתי דרכך את dbz-online

כמה משאבים זה יבזבז, ובכללי זה כ"כ קריטי שחייב לוותר על זה?
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


כל הזמנים הם GMT +2. הזמן כעת הוא 03:35.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ