PHP - заменить http на https в URL - PullRequest
17 голосов
/ 13 марта 2011

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

У меня в PHP есть

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

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

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

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

Ответы [ 7 ]

60 голосов
/ 13 марта 2011
$url = preg_replace("/^http:/i", "https:", $url);
11 голосов
/ 11 декабря 2013
$url = str_replace( 'http://', 'https://', $url );
2 голосов
/ 13 марта 2011

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

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

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

$url = sprintf($url, $protocol);
1 голос
/ 03 апреля 2019

Если вы считаете, что регистр не учитывается, используйте функцию str_ireplace .

Пример:

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

Кроме того, вы можете использовать муравьиную схему URL в файлах CDN. Пример:

$url = str_ireplace( 'http:', 'https:', $url );

Это ... 'https:')

<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>

Становится ... ('https:' заменен)

<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
1 голос
/ 01 декабря 2017

Решение, которое не заменяет 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'] ));
}
1 голос
/ 13 марта 2011

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

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

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

0 голосов
/ 04 апреля 2014
$count = 1;
$url = str_replace("http://", "https://", $url, $count);

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...