J'ai écrit une petite fonction pour établir le protocole d'URL du site actuel mais je n'ai pas SSL et je ne sais pas comment tester s'il fonctionne sous https. Pouvez-vous me dire si c'est correct?
function siteURL()
{
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'].'/';
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Est-il nécessaire de le faire comme ci-dessus ou puis-je simplement le faire comme?:
function siteURL()
{
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Sous SSL, le serveur ne convertit-il pas automatiquement l'URL en https même si l'URL de la balise d'ancrage utilise http? Faut-il vérifier le protocole?
Je vous remercie!
Réponses:
Ce n'est pas automatique. Votre fonction supérieure semble correcte.
la source
//mysqite.com
au lieu dehttps://mysitecom
Je sais qu'il est tard, bien qu'il existe un moyen beaucoup plus pratique de résoudre ce genre de problème! Les autres solutions sont assez compliquées; voici comment je le ferais:
... ou même sans condition si vous préférez:
Jettes un coup d'oeil à
$_SERVER["SERVER_PROTOCOL"]
la source
stripos
au lieu destrpos
?$_SERVER['SERVER_PROTOCOL']
est fait pour stockerHTTP/1.0
ouHTTP/1.1
selon la version du protocole, de quel type de configuration de serveur HTTP parlez-vous, stockant deshttps
informations sur cette chaîne provenant de la requête http?Ça marche pour moi
la source
Quelques changements:
la source
chemin court
la source
REQUEST_SCHEME
n'est pas fiableParce que tester le numéro de port n'est pas une bonne pratique selon moi, ma solution est:
La
HTTPS
constante renvoieTRUE
if$_SERVER['HTTPS']
est définie et égale à "1", "true", "on" ou "yes". Renvoie FAUX sinon.la source
Pour tout système sauf IIS, cela suffit pour définir l'URL du site:
ou
dépend de ce que vous voulez exactement: HTTP_HOST vs SERVER_NAME
la source
En cas de procuration, le
SERVER_PORT
peut ne pas donner la valeur correcte, c'est donc ce qui a fonctionné pour moi -la source
Utilisez cette variable de serveur pour obtenir les détails du protocole:
Notez que cette variable de serveur n'est pas fiable. Pour plus d'informations, consultez: $ _SERVER ['REQUEST_SCHEME'] est-il fiable?
la source
Je sais que c'est une vieille question, mais je suis tombé dessus aujourd'hui car j'avais besoin de tester cela sur mon site. Il semble que les réponses ci-dessus soient inutilement compliquées. Pour établir le protocole du site, il vous suffit de tester
$_SERVER['HTTPS']
Si le protocole utilise HTTPS, puis
$_SERVER['HTTPS']
reviendra «on». Sinon, la variable restera vide. Par exemple:// test if HTTPS is being used. If it is, the echo will return '$SSL_test: on'. If not HTTPS, '$SSL_test' will remain empty.
$SSL_test = $_SERVER['HTTPS'];
Vous pouvez utiliser ce qui précède pour tester facilement et proprement le protocole HTTPS et l'implémenter en conséquence. :)
la source
fait une fonction en utilisant la réponse de Rid Iculous qui fonctionnait sur mon système.
J'espère que ça aide
la source
J'ai testé la réponse la plus votée et cela n'a pas fonctionné pour moi , j'ai fini par utiliser:
la source
$_SERVER["HTTPS"]
et votre code peut donc revenirhttp://
même s'il devrait l'êtrehttps://
https
, pourquoi le code retournerait-il quand mêmehttps
?$_SERVER["HTTPS"]
variable n'est jamais définie.la source
Extrait de CodeIgniter:
la source
c'est la meilleure solution de https ou http, utilisez ceci:
Mais ne peut pas afficher https ou http, donc il ne sert qu'à lier le contenu de votre site comme l'image, etc.
si vous souhaitez rediriger votre site en https, ajoutez ce code dans le fichier .htaccess:
Changez www.your-domain.com avec votre nom dowmain.
la source
Voici comment je le fais ... c'est une version abrégée
if else
de la réponse de Rid Iculous ...la source
Je pense que la fonction complète devrait ressembler à:
Remarques:
la source
Je sais que je suis un peu en retard à cette fête, mais si vous préférez de loin ne pas utiliser $ _SERVER car il est fortement déconseillé, et même désactivé sur certains frameworks PHP; et vous avez un serveur web apache, vous pouvez utiliser sa commande native ainsi: -
la source