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

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

У меня в PHP,

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

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

Итак, когда пользователь проверяет поле с name= "https", я хочу добавить s в $url http, сделав его https://google.com.

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

Ответ 1

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

Ответ 2

$url = str_replace( 'http://', 'https://', $url );

Ответ 3

Один из способов:

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

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

$url = sprintf($url, $protocol);

Ответ 4

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

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

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

Ответ 5

Решение, которое не заменяет 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'] ));
}

Ответ 6

$count = 1;
$url = str_replace("http://", "https://", $url, $count);

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