[PHP] Neue Seite öffnen

hans 2

fühlt sich hier wohl
Neue Seite öffnen

Hi,

ich hab da mal eine Frage und hab noch kein anderes Thema dazu im Board gefunden.

Ich bin gerade dabei mir eine kleine LogIn Seite mit php zu erstellen.
Es ist so gedacht:
User gibt seinen Namen und sein Passwort ein. Danach klickt er auf einen submit Button und das ganze wird per post weggeschickt.
In einer Funktion wird dann geprüft, ob das eingegebene Passwort mit dem Passwort aus der DB übereinstimmt.
---> Soweit tut alles
Jetzt möchte ich eine neue Seite öffnen, wenn das Passwort korrekt ist. Das habe ich mit der Funktion "header" versucht. Irgendwie funktioniert das aber nicht.
Hier mal etwa der Aufbau der Seite:

<head>
<?php
function loginTest() {
//Passwort Test
if (passwort richtig)
header ("Location: http://www.irgendwas.de");
exit;

if (isset($_POST['gesendet']))
login();
?>
</head>
<body>
<form action (an die eigene Seite) method=post>
<input>
<input>
<button type=submit name=gesendet>
</body>

So in etwa sieht das Grundgerüst des Codes aus.
Aber leider klappt das mit dem Aufruf der neuen Seite nicht.

Danke schonmal
 
Header ist dafür nicht geeignet. Im Grunde kannst du automatisiert ein neues Fenster imho nur mittels JavaScript öffnen. Falls der User im Browser jedoch JS deaktiviert hat, sollte ihm zumindest ein Link präsentiert werden mit dem ein neues Fenster geöffnet werden soll (mittels target="_blank" im <a>-Tag).
 
im grunde genommen sollte es mit header(location: doch funktionieren.
(also ein redirect, kein öffnen eines neuen browserfensters, das ist aus deinem text nicht ganz klar ersichtlich)
könntte es sein, das du die funktion "function loginTest()" einfach garnicht aufrufst beim erneuten laden der seite?? du rufst eine funktion login() auf ..

versuchs mal so:
PHP:
<head>
<?php

if (($_POST['passwort] == dein_passwort))
{
   header ("Location: http://www.irgendwas.de");
   exit;
}
?>
</head>
<body>
<form action (an die eigene Seite) method=post>
<input>
<input>
<button type=submit name=gesendet>
</body>

falls du wirklich ein neues browserfenster öffnen willst, versuchs so:

PHP:
<head>
<?php

<script language="JavaScript">
   function Fenster()
      {open("fenster.html", "NeuesFenster","width=250,height=150");}
</script> 

if (($_POST['passwort] == dein_passwort))
{
   $ladida= 'onload="Fenster();"';
}
echo <<<html
</head>
<body $ladida >
<form action (an die eigene Seite) method=post>
<input>
<input>
<button type=submit name=gesendet>
</body>
html;
?>
 
Zuletzt bearbeitet:
Also es soll kein neues Fenster aufgehen, sondern man soll einfach umgeleitet werden.

Sorry, hatte das in meinem Text falsch geschrieben mit den Funktionen.
Hier nochmal der korrektere Aufbau:

<head>
<?php
function loginTest() {
//Passwort Test
if (passwort richtig)
header ("Location: http://www.irgendwas.de");
exit;
}

if (isset($_POST['gesendet'])) {
loginTest();
}
?>
</head>
<body>
<form action (an die eigene Seite) method=post>
<input>
<input>
<button type=submit name=gesendet>
</body>



Die Funktionen "login" und "loginTest" sollten nicht unterschiedlich sein. Die "header" Funktion steht in der login Funktion drin. Sollte der Login also richtig laufen, soll man auf eine neue Seite weitergeleitet werden. Nur leider bekomme ich eben das mit PHP nicht hin :)

Werde morgen mal die Lösung mit JavaScript ausprobieren. Hatte an sowas auch schon gedacht, wollte es aber eigentlich lieber mit PHP machen.

Hat einer vll. noch ne Idee? :)
 
Hab jetzt ne Lösung mit JS gefunden, aber wie gesagt, ist halt leider JS :)

Code:
<html>
<head>
<script type="text/javascript">
	function Fenster() {
		top.location.href = "http://www.spiegel.de";
	}
	<?php
		if ($_POST['passwort'] == "irgendwas") {
			$das = 'onload = "Fenster();"';
		}
	?>
</script>
</head>
<body <?php echo $das; ?>>
<form name="pas" action="(auf die eigene Seite)" method="post">
<input name="passwort">
<button name="gesendet" type="submit">OK</button>
</form>

</body>
</html>

Also falls noch einer ne Idee mit PHP hat .... bitte melden :D

--- edit:
Hab was ganz simples gefunden mit PHP, das man im <head> deklarieren muss:
Code:
<head>
<?php

		if ($_POST['passwort'] == "irgendwas") {
			include 'http://www.spiegel.de';
		}
	?>

</head>

--edit:
Allerdings wird die Seite leider nur eingefügt und man wird nicht weitergeleitet. Also bleibt die einzige Lösung bisher wohl doch nur JS.
 
Zuletzt bearbeitet:
das muss gehen mit header...
versuchs mal mit

PHP:
<head>
<?php
function loginTest() {
//Passwort Test
if (passwort richtig)
header ("Location: http://www.irgendwas.de");
exit;
}

if ($_POST['gesendet'] == "ja")) {
loginTest();
}
?>
</head>
<body>
<form action (an die eigene Seite) method=post>
<input>
<input>
<button type="hidden" name="gesendet" value = "ja">
<input type="submit" value="Formular absenden" />
</body>
 
Ok, ich weiß jetzt wie es mit "header" geht.
Der Teil mit
<?php
if (form gesendet wurde)
if(passwort stimmt)
header("Location: http://www.irgendwas.de");
?>

muss ganz am Anfang des Dokumentes stehen, also auch noch vor <html>.
Es darf keine freie Zeile oder sowas vorher sein. In Zeile 1 muss sofort "<?php" stehen und danach dann die Anweisungen mit der header Funktion.
z.B.:
Code:
<?php
 if (irgendwas)
  header("Location: http://www.irgendwas.de");
  exit;
?>
<html>
<head>
    bla
</head>
<body>
    bla
</body>
</html>

So funktionierts :D
 
Oben