ユーザーがHTMLフォームのボックスをチェックした後、HTTPの後にsを追加する方法を理解しようとしています。
私のPHPには、
$url = 'http://google.com';
if(!isset($_POST['https'])) {
//something here
}
つまり、基本的には、ユーザーが「https」という名前のボックスをオンにすると、$ urlのhttpにsを追加して 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);
他の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つの答えはJavaScriptと base タグです。
base
タグを使用すると、相対URLが解決される対象となる別のOriginを強制できます。
私はそれをフォームで使用していて、ユーザーがチェックボックスをオンにすると、フォームに合計が表示され、他のすべてのページはhttpsサイトから表示されるので、どこでも相対URLを使用できます。ユーザーがサイトフォームまたはhttpに変更したい場合は、別のbase
タグを挿入するだけです。
大文字と小文字を区別しない場合は、 str_ireplace 関数を使用します。
例:
$url = str_ireplace( 'http://', 'https://', $url );
または、CDNファイルのURLスキームを置き換える必要がある場合。例:
$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>