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:
D

Deleted member 103

Guest
Non vorrei sbagliare, ma penso che quasi tutti gli indirizzi(incluso anche il mio) iniziano con "https".
 

LucaMs

Expert
Licensed User
Longtime User
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 è.
 

Star-Dust

Expert
Licensed User
Longtime User
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.
 

Star-Dust

Expert
Licensed User
Longtime User
Già provato, non funziona
 

sirjo66

Well-Known Member
Licensed User
Longtime User
ti passo il codice che uso io

Nel mio file index.php di www.miosito.it, le prime righe sono:
B4X:
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
 

Star-Dust

Expert
Licensed User
Longtime User
Purtroppo è un problema del sito ospitante. $_SERVER['HTTPS'] non restituisce nulla.

IsSet è sempre falso.
 

sirjo66

Well-Known Member
Licensed User
Longtime User
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
B4X:
<!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:

MarcoRome

Expert
Licensed User
Longtime User
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;
?>
 
Top