web-dev-qa-db-fra.com

PHP - remplace http par https dans l'URL

J'essaie de comprendre comment ajouter s après HTTP une fois qu'un utilisateur a coché une case dans le formulaire html.

J'ai dans mon PHP,

$url = 'http://google.com';

if(!isset($_POST['https'])) { 
  //something here
}

Donc, en gros, lorsque l’utilisateur coche une case avec le nom = "https", je souhaite ajouter s à http de $ url, ce qui en fait https://google.com .

J'ai peu de connaissances sur PHP et si quelqu'un peut m'expliquer comment faire, cela serait vraiment utile! Merci.

17
Kevin Jung
$url = preg_replace("/^http:/i", "https:", $url);
59
Jakub Hampl
$url = str_replace( 'http://', 'https://', $url );
11
tivnet

Une manière:

$url = '%s//google.com';
$protocol = 'http:';

if(!isset($_POST['https'])) { 
    $protocol = 'https:';
}

$url = sprintf($url, $protocol);
2
Felix Kling

Une solution qui ne remplace pas les URL contenant d'autres URL, par exemplehttp://foo.com/redirect-to/http://newfoo.com

$desiredScheme = "http"; // convert to this scheme;
$parsedRedirectUri = parse_url($myCurrentUrl);
if($parsedRedirectUri['scheme'] !== $desiredScheme) {
    $myCurrentUrl= substr_replace($myCurrentUrl, $desiredScheme, 0, strlen( $parsedRedirectUri['scheme'] ));
}
1
FaZ

Je ne sais pas sur combien de pages vous souhaitez que cela se produise, l'utilisateur coche la case, mais une réponse est JavaScript et la balise base .

Avec la balise base, vous pouvez forcer une origine différente avec laquelle votre URL relative sera résolue.

Si vous l’utilisez sous une forme, et que l’utilisateur coche la case correspondante, toutes les autres pages seront affichées à partir du site https , de sorte que vous pouvez utiliser une adresse URL relative partout, insérez simplement une autre. balise base lorsque l'utilisateur souhaite modifier le formulaire du site ou en http (s).

1
vbence