2013-05-06 19 views
5

Soketleri kullanarak güvenli bir giriş programı oluşturmaya çalışıyorum. Onu çalıştırdığınızdaGüvenli giriş Giriş soketiyle

<?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"; 
} 

?> 

aşağıdaki uyarılar döndürülür: Burada yazdığım kod

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]

Sorunum SSL protokolünü kullanmak için talimat kaldırırsanız bu kodu doğru çalışmasıdır fsockopen() işlevi, ancak güvenli bir HTTP bağlantısı uygulamak gerekir.

Bana nerede yanlış olduğumu söyleyebilen herkese çok minnettar olurum. Teşekkürler!

+3

Eğer $ port = 443 kullanmamalısınız devam etmek nasıl sunucu talimat; – Aivar

+0

Bu seçeneği zaten denedim ancak bu şekilde başka bir hata döndürdü: fsockopen(): ssl: // localhost: 443 – prisca

+0

'a bağlanamıyor ve localhost https'nin doğru şekilde çalıştığından emin misiniz? – Aivar

cevap

2

Burada tam olarak neye ihtiyacınız olduğunu belirtmek için bazı değişiklikler yapmanızı öneririz.

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

SSL varsayılan olacaktır portu 80 kullandığından, 443.

O bilinmektedir olarak kullanımda SSL sürümü olmadığı bazı sistemlerde sorunlara neden $ noktasını belirtmek yapmaz belirtilen ve bunu tespit etmeye çalışmak için php'ye dayanır. Ben sunucu SSLv2'yi veya SSLv3 kullanıyorsa bağlı ya

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

veya

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

denemenizi öneririz.

Bu açıkça belirsizliği ortadan kaldırır ve

İlgili konular