PHP – замените http на https в URL

Я пытаюсь выяснить, как добавить s после HTTP, как только пользователь проверит окно в форме html.

У меня на моем PHP,

$url = 'http://google.com'; if(!isset($_POST['https'])) { //something here } 

Таким образом, в основном, когда пользователь проверяет поле с именем = «https», я хочу добавить s в http-адрес http-url, сделав его https://google.com .

У меня мало знаний о PHP, и если кто-то может объяснить мне, как это сделать, это было бы очень полезно! Благодарю.

 $url = preg_replace("/^http:/i", "https:", $url); 
 $url = str_replace( 'http://', 'https://', $url ); 

В одну сторону:

 $url = '%s//google.com'; $protocol = 'http:'; if(!isset($_POST['https'])) { $protocol = 'https:'; } $url = sprintf($url, $protocol); 

Я не знаю, сколько страниц вы хотите, чтобы это произошло, пользователь проверяет флажок, но один ответ – это JavaScript и базовый тег.

С base тегом вы можете форсировать другое происхождение, с чем будут устранены ваши относительные URL-адреса.

Я использую его ina form, и пользователь указывает флажок, который они подавляют, все остальные страницы будут просматриваться с сайта https , поэтому вы можете использовать относительные URL-адреса повсюду, просто вставьте другой base тег, когда пользователь захочет изменить форму сайта или на http (s).

Решение, которое не заменяет URL-адреса, содержащие другие URL-адреса, например http://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'] )); } 
 $count = 1; $url = str_replace("http://", "https://", $url, $count); 

Примечание. Передача 1 напрямую приведет к фатальной ошибке (фатальная ошибка: только переменные могут передаваться по ссылке), поэтому вам нужно передать последний параметр по ссылке.