Ответ 1
$url = preg_replace("/^http:/i", "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, и если кто-то может объяснить мне, как это сделать, это было бы очень полезно! спасибо.
$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.
С тегом base
вы можете заставить другое происхождение, к чему будут относиться ваши относительные URL-адреса.
Я использую его в форме, и пользователь указывает флажок, который они подавляют, все остальные страницы будут просматриваться с сайта https, поэтому вы можете использовать относительные URL-адреса повсюду, просто вставьте другой base
тег, когда пользователь хочет изменить форму сайта или http (ы).
Решение, которое не заменяет 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 напрямую вызовет фатальную ошибку (фатальная ошибка: только переменные могут передаваться по ссылке), поэтому вам нужно передать последний параметр по ссылке.