# auf https umschalten



## Raven280438 (8. Januar 2008)

Hi,

ich habe eine Seite, auf der man bestellen kann. Ist es möglich, mittels PHP irgendwie auf https umzuschalten? Ich gebe die Links ja ohne http:// (bzw. https://) an.

Vielleicht irgendwie mit der header-Funktion?



Gruß


----------



## Radhad (8. Januar 2008)

Zuerst einmal müsstest du den VirtualHost Eintrag im Apache ändern, da https normalerweise auf Port 443 läuft. Zudem müsstest du ein Zertifikat haben, am besten von einer öffentlichen Zertifizierungsstelle, damit du SSL nutzen kannst. Das kostet aber meist ziemlich viel Geld, daher solltest du dich erstmal informieren (bei deinem Webhoster z.B.).


Gruß Radhad


----------



## Gumbo (8. Januar 2008)

Die $_SERVER['HTTPS']-Variable zeigt an, ob die Anfrage über HTTPS lief.


----------



## Raven280438 (8. Januar 2008)

Vielen Dank für die Antworten, ich hab das Problem jetzt folgender Maßen gelöst:


```
if (!$_SERVER['HTTPS']) {
	$redirect = "https://".$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF']."?".$_SERVER['QUERY_STRING'];
	header('Location: '.$redirect);
}
```

Das funktioniert auch so, da man auf die Bestellungs-Seite nur mit GET kommt.


Gruß


----------



## Gumbo (8. Januar 2008)

Kleiner Verbesserungsvorschlag:
	
	
	



```
if( !isset($_SERVER['HTTPS']) ) {
	$redirect = "https://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
	header('Location: '.$redirect, true, 101);
}
```


----------



## Raven280438 (8. Januar 2008)

Danke,

kannst du kurz erklären, für was das true und 101 bei 
	
	
	



```
header('Location: '.$redirect, true, 101);
```
 stehn?


----------



## l0c4lh05t (8. Januar 2008)

Raven280438 hat gesagt.:


> Danke,
> 
> kannst du kurz erklären, für was das true und 101 bei
> 
> ...



Der arme Gumbo, finde ich, ist da etwas unterfordert, also antworte ich mal 
Die Antwort zu deiner Frage steht auf der PHP Referenz, nämlich hier, unter "replace", das ist der Name des dritten Parameter...


> Der optionale Parameter replace  gibt an, ob der Header einen vorhergehenden gleichartigen Header ersetzten soll, oder ob ein zweiter Header des selben Typs hinzugefügt werden soll. Standardmäßig wird ersetzt; wenn Sie als zweites Argument FALSE übergeben, können Sie so mehrere Header desselben Typs erzwingen.


...dann steht da noch etwas von wegen "http_response_code" - diese Seite hat mir Google ausgespuckt: hier und das hier sagt Wikipedia dazu 
Hoffe ich konnte dir helfen ^^


----------

