2013-05-06 8 views
5

के साथ सुरक्षित लॉगिन मैं सॉकेट का उपयोग करके एक सुरक्षित लॉगिन प्रोग्राम बनाने की कोशिश कर रहा हूं।सॉकेट

<?php 

$myusername=$_POST["username"]; 
$mypassword=$_POST["password"]; 
$host="localhost"; 
$port=80; 
$timeout=60; 
$target="/admin_area.php"; 
if($myusername=="admin" && $mypassword=="passwd") 

{ 
    if (!$sock=fsockopen("ssl://".$host,$port,$errnum,$errstr,$timeout)) 

    { 
    die ("Could not open socket: [$errnum] $errstr"); 
    } 

    else 
    { 
    $posted_vars=array("username"=>$myusername, 
         "password"=>$mypassword); 
    $body=""; 
    foreach ($posted_vars as $parameter=>$value) 

    { 
     $body.="&".$parameter."=".$value; 
    } 
    $headers="POST ".$target." HTTP/1.0 \r\n"; 
    $headers.="Content-Type: application/x-www-form-urlencoded \r\n"; 
    $headers.="Content-Length: ".strlen($body)." \r\n"; 
    $headers.="Connection: Keep-Alive \r\n"; 
    $headers.="Authorization: Basic ".base64_encode($myusername.":".$mypassword)." \r\n\r\n"; 
    fputs ($sock,$headers.$body); 
    $data=""; 
    while (!feof ($sock)) 

    { 
     $data.=fgets($sock,3000); 
    } 
    list($res_head,$res_body)=explode("\r\n\r\n",$data); 
    echo $res_body; 
    } 
} 

else 

{ 
    echo "Login not happened successfully"; 
} 

?> 

जब मैं इसे चलाने के लिए, निम्न चेतावनी लौटा दिया जाता है:: यहाँ कोड मैंने लिखा है

Warning: fsockopen(): SSL operation failed with code 1. OpenSSL Error messages: error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol in C:\wamp\www\log_in.php on line 12

Warning: fsockopen(): Failed to enable crypto in C:\wamp\www\log_in.php on line 12

Warning: fsockopen(): unable to connect to ssl://localhost:80 (Unknown error) in C:\wamp\www\log_in.php on line 12

Could not open socket: [0]

मुद्दा इस कोड को ठीक से काम करता है कि अगर मैं में SSL प्रोटोकॉल का उपयोग करने के निर्देश को दूर है fsockopen() फ़ंक्शन, लेकिन मुझे एक सुरक्षित HTTP कनेक्शन लागू करने की आवश्यकता होगी।

मैं किसी के लिए बहुत आभारी हूं जो मुझे बता सकता है कि मैं कहां गलत हूं। धन्यवाद!

+3

आप $ बंदरगाह = 443 उपयोग नहीं करना चाहिए निर्देश देता है; – Aivar

+0

मैंने पहले से ही इस विकल्प को आजमाया है लेकिन इस तरह से यह एक और त्रुटि देता है: fsockopen(): ssl से कनेक्ट करने में असमर्थ: // localhost: 443 – prisca

+0

और आप सुनिश्चित हैं कि लोकलहोस्ट https सही ढंग से चल रहा है और चल रहा है? – Aivar

उत्तर

2

मैं आपको जो कुछ चाहिए उसे निर्दिष्ट करने के लिए यहां कुछ बदलाव करने का सुझाव दूंगा।

if (!$sock=fsockopen("ssl://".$host,$port,$errnum,$errstr,$timeout)) 

एसएसएल पोर्ट 80 जो डिफ़ॉल्ट होगा उपयोग नहीं करता है, तो के रूप में 443

यह ज्ञात किया गया है, जहां उपयोग में एसएसएल का संस्करण नहीं है $ पोर्ट निर्दिष्ट कुछ सिस्टम पर समस्याओं का कारण निर्दिष्ट, और इसका पता लगाने के लिए PHP पर निर्भर करता है। मैं या तो

if (!$sock=fsockopen("sslv2://".$host,443,$errnum,$errstr,$timeout)) 

या

if (!$sock=fsockopen("sslv3://".$host,443,$errnum,$errstr,$timeout)) 

यदि आपके सर्वर SSLv2 या SSLv3 उपयोग कर रहा है निर्भर करता है की कोशिश कर रहा सुझाव है।

यह कोई अस्पष्टता दूर करता है और स्पष्ट रूप से सर्वर आगे बढ़ने के लिए कैसे