Italian [RISOLTO] PHP e SSL

Star-Dust

Expert
Licensed User
Longtime User
Buongiorno a tutti,

Sto realizzando un piccolo codice in PHP.

Ho bisogno di capire se la pagina è SSL, ovvero se l'indirizzo inizia con https.
Questo perché nel caso voglio reindirizzare alla pagina sicura.

Ho provato molti sorgenti trovati sul web ma nessuno ha funzionato.
 
Last edited:
Non vorrei sbagliare, ma penso che quasi tutti gli indirizzi(incluso anche il mio) iniziano con "https".
 
Non vorrei sbagliare, ma penso che quasi tutti gli indirizzi(incluso anche il mio) iniziano con "https".
Sì, i siti con https indicano un protocollo sicuro e quelli senza la "s", solo http, non lo sono, ma la domanda è (credo): "ho scritto una pagina web: come posso verificare che essa sia/risulti/venga rilevata come sicura?" e io non credo esista una risposta, perché non dipende dalla pagina, puoi metterla sia in un sito sicuro che in uno che non lo è.
 
le pagine possono essere http://www.lucams.it/index.php oppure https://www.lucams.it/index.php la pagina è la stessa e viene raggiunta da entrambi gli indirizzi.
Non è il sito che è sicuro e il protocollo che scegli che è sicuro. Ora se fosse in B4J e usassi jServer in base alla pagina indirizzerei a sicuro e non sicuro, ma il server non è b4j è un dominio in Hosting e accetta entrambi gli indirizzi.
Vorrei reindirizzare le pagine che vengono chiamate in chiaro e ci sono diversi sorgenti php che trovi sul web che puntualmente non funzionano.

Devo fare un controllo in php e vedere se sta usando il protocollo sicuro.

In php come faccio a vedere che è https?
Domanda semplice.
 
Già provato, non funziona
 
ti passo il codice che uso io

Nel mio file index.php di www.miosito.it, le prime righe sono:
Code:
if ($_SERVER['SERVER_NAME']!='localhost' && substr($_SERVER['REMOTE_ADDR'],0,10)!='192.168.1.') {
    if(!isset($_SERVER['HTTPS'])) {
        header("Location:https://www.miosito.it");
        return;
    }
}

ovviamente devi modificare www.miosito.it

quel 192.168.1. mi serve quando lo sto testando in locale, anche questo se serve devi cambiarlo
 
Purtroppo è un problema del sito ospitante. $_SERVER['HTTPS'] non restituisce nulla.

IsSet è sempre falso.
 
direi che il problema è il server :)
probabilmente non c'è installato Apache ma qualcos'altro


copia questo codice sul server (chiamalo getpost.php) e poi chiamalo da un browser qualsiasi, prima con http poi con https, e guarda la differenza dei settaggi
Code:
<!DOCTYPE html>
<html>
<body>
<?php
if (count($_GET)>0) {
    echo "<pre><h2>GET:</h2>";
    print_r($_GET);
    echo "</pre><hr>\n";
}

if (count($_POST)>0) {
    echo "<pre><h2>POST:</h2>";
    print_r($_POST);
    echo "</pre><hr>\n";
}      

echo "<pre><h2>SERVER:</h2>";
print_r($_SERVER);
echo "</pre><hr>\n";


if (count($_COOKIE)>0) {
    echo "<pre><h2>COOKIE (".count($_COOKIE)."):</h2>";
    print_r($_COOKIE);
    echo "</pre><hr>\n";
}      

echo "<pre><h2>HEADERS:</h2>";
print_r(getallheaders());
echo "</pre><hr>\n";

$body = file_get_contents('php://input');
if ($body!='') {
    echo "<pre><h2>POST BODY:</h2>";
    echo htmlentities($body);
    echo "</pre><hr>\n";
}

?>

<!--
<pre>
<h2>FILES:</h2> <?php print_r($_FILES); ?>
</pre>
<hr>
-->

<br/>
</body>
</html>
 
Last edited:
PHP:
<?
if (isset($_SERVER['HTTPS']) &&
    ($_SERVER['HTTPS'] == 'on' || $_SERVER['HTTPS'] == 1) ||
    isset($_SERVER['HTTP_X_FORWARDED_PROTO']) &&
    $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https') {
  $protocol = 'https://';
}
else {
  $protocol = 'http://';
}
echo $protocol;
?>
 
Back
Top