webentwicklung-frage-antwort-db.com.de

PHP - Ersetzen Sie http durch https in der URL

Ich versuche herauszufinden, wie man s nach HTTP hinzufügt, sobald ein Benutzer ein Kontrollkästchen im HTML-Formular aktiviert.

Ich habe in meinem PHP,

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

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

Wenn der Benutzer also ein Kästchen mit dem Namen = "https" ankreuzt, möchte ich s zu http von $ url hinzufügen, indem er https://google.com macht.

Ich habe wenig Wissen über PHP und wenn mir jemand erklären kann, wie ich das machen soll, wäre das wirklich hilfreich! Vielen Dank.

17
Kevin Jung
$url = preg_replace("/^http:/i", "https:", $url);
59
Jakub Hampl
$url = str_replace( 'http://', 'https://', $url );
11
tivnet

Einweg:

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

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

$url = sprintf($url, $protocol);
2
Felix Kling

Eine Lösung, die keine URLs ersetzt, die andere URLs enthalten, z. B.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
FaZ

Ich weiß nicht, auf wie vielen Seiten der Benutzer das Kontrollkästchen aktivieren soll, aber eine Antwort ist JavaScript und das base -Tag.

Mit dem Tag base können Sie einen anderen Ursprung erzwingen, für den Ihre relativen URLs aufgelöst werden.

Wenn Sie es in einem Formular verwenden und der Benutzer das Kontrollkästchen aktiviert, werden alle anderen Seiten von der https - Site aus betrachtet. Sie können also relative URLs überall verwenden. Fügen Sie einfach eine andere ein base-Tag, wenn der Benutzer das Site-Formular oder das HTTP (s) ändern möchte.

1
vbence

Wenn Sie die Groß- und Kleinschreibung nicht berücksichtigen, verwenden Sie die Funktion str_ireplace .

Beispiel:

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

Alternativ können Sie auch das URL-Schema in CDN-Dateien ersetzen. Beispiel:

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

Dies ... (mit '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>

Wird ... ('https:' wurde ersetzt) ​​

<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
NaxBuda