Supportnet Computer
Planet of Tech

Supportnet / Forum / Webseiten/HTML

Link automatisch öffnen wenn Stelle im Code erreicht





Frage

Hallo, ich hab folgendes Problem: Ich hab ein PHP Skript und will das wenn eine Bedingung erfüllt ist also zBsp $wert==1 automatisch ein Link geöffnet wird wenn möglich noch im selben Fenster. Ich muss sagen mit Header() hab ich es schon versucht aber das geht irgendwie nicht. Danke

Antwort 1 von Obsus


if ($wert==1) header("Location: http://www.example.com");

Wichtig ist, daß vorher kein einziges Zeichen ausgegeben wird. Weder durch PHP (z.B. echo) noch durch direkten HTML-Code in der PHP-Datei wie z.B. "<html>".
Grund: "Location" ist ein Header und muß mit den anderen Headern gesendet werden. Sobald eine PHP-Datei anfängt etwas auszugeben (außer natürlich mit der header()- oder setcookie()-Funktion), beendet der Webserver die Headerausgabe und beginnt mit dem HTTP-Body, in dem das HTML-Dokument gesendet wird. Und wenn ein Header erst im Body gesendet wird, reagiert der Browser nicht mehr entsprechend darauf.

Antwort 2 von namtar

Ja danke aber das geht halt in meinem Fall ni.
Weil er öffnet ne Datei ließt nen Wert aus und je nach dem wie der dann is soll die seite geöffnet werden oder eben nicht

Antwort 3 von Obsus

Kein Problem! Dateien kann er öffnen, soviel er möchte. Er darf nur nichts an den Browser abschicken!

Berichtigung zu oben:
Wenn es zu spät ist, wird der Headerbefehl vom Server ignoriert, da er nichts brächte und nur im Dokument stören würde.

Antwort 4 von namtar

Jo aber er öffnet die Datei aber erst nach eingabe des Users also wird die Siete aufgebaut gewartet bis der User klickt dann die Datei geöffnet und dann halt die If-Schleife und da geht das ja mit Header ni :(

Antwort 5 von Obsus

Das kommt mir komisch vor. Ich kenne keine interaktiven PHP-Skripte. Kannst Du mal genauer erklären, wie Du das machst? Also das Warten mit der Ausgabe, bis der User sich entschieden hat?

Antwort 6 von namtar

So mein ich das ni also.
Also es ist ein Textfeld da trägt er seinen Namen ein drückt Enter dann wird die Datei geöffnet geguckt ob zBsp der Name da drin steht und dann ein Rückgabewert erhalten. Dieser wird dann halt in einer If-Schlefie ausgewertet und bei erfolg soll halt zBsp der Link öffnen, klar?

Antwort 7 von Obsus

Jo. Aber dann versteh ich Dein Prob weiterhin nicht. Durch das Abschicken des Formulars wird doch das Skript (welches unter Form/Action adressiert wird) neu gestartet. Und dieses Skript hat dann noch keine Ausgabe gemacht, kennt aber schon den Input vom User ..

Antwort 8 von namtar

<?php
session_set_cookie_params(60);
session_start();
if(!session_is_registered(´user_ip´)){
$gimps= mt_rand(0,5);
$fp=@fopen("http://www.example.com/...","r");
if ($fp)
{
while ($data = fgets ($fp,1024))
{
$line .= $data;
}
fclose($fp);
}
$werte = split("[|]",$line);
$wert1 = $werte[0];
if($wert1== "9001")
{
session_register(´user_ip´);
header("Location: http://www.google.com");
}
?>

so sieht jetzt mein code aus der über allem steht und so funzt es halt nicht

Antwort 9 von Obsus

Dann liegt das Prob woanders. Ich kann keine Ausgabe vor header() erkennen. Hast Du mal geprüft, ob die Bedingung "if($wert1== "9001")" überhaupt erfüllt wird? Und öffnest Du die Datei wirklich auf einem fremden Server? Sonst solltest Du einen lokalen Dateipfad verwenden.

Antwort 10 von namtar

ja bedinung wird erfüllt und datei is auch auf nem andern server.
das probvlem is nur wenn ich den code davor schreibe kommt fehler auf der letzen code zeile also </html>
nehm ich die große if-schleife raus gehts

Antwort 11 von Obsus

Wie lautet denn die Fehlerbeschreibung? Und wie lautet die betreffende Codezeile? "</html>" ist ja kein PHP-Code. Entweder Du beendest den PHP-Tag vorher ("?>") oder Du schreibst

echo "</html>";


Antwort 12 von namtar

Parse error: parse error in /home/www/web532/html/index.php on line 205

und das ist die letzte zeite der datei und halt </html>

Antwort 13 von Obsus

Bei mir kommt ne andere Fehlermeldung, wenn innerhalb von <?php ?> ein "nackter" HTML-Tag steht:
Zitat:
Parse error: parse error, unexpected ´<´ in .. on line ..

Deswegen bin ich mir jetzt nicht sicher ob das bei Dir der Fall ist. Nach Deiner Beschreibung fällt mir aber keine andere Ursache ein. Abhilfe wäre wie in Antwort 11 beschrieben.
Die Angabe der Zeilennummer stimmt bei PHP leider nicht immer mit den Zeilen der Textdatei überein. Aber wenn, dann ist sie zu klein, z.B. wenn man irgendwo das zeilenabschließende ";" vergessen hat aber nie zu groß. Das würde ich also als verwirrendes Moment ausschließen.

Antwort 14 von namtar

Ich hab doch den Tag aber schon lange beendet bevor das ganze html zeug beginnt...also irgendwie weiß ich ni weiter gibts vielleicht noch ne ander lösung mit JS oder so?

Antwort 15 von Obsus

Poste doch mal den ganzen Code.

Antwort 16 von namtar

das sind 200 zeilen...haste ne mail oder sowas oder icq damit wir da n bissel schneller vorwärts kommen nur deswegen jetzt.

Antwort 17 von namtar

Ich bin für alle Vorschläge offen auch von Java usern

Antwort 18 von Obsus

Stell den Code doch als Textdatei ins Netz.

Antwort 19 von namtar

http://web532.xtraserver.de/eiche/index.txt

die if schleife am anfang hab ich in komentare gesetzt damit es wenigstens läuft also kannste dir weg denken die kommentar zeichen

Antwort 20 von Obsus

Du hast vergessen die geschweifte Klammer aus Zeile 4 zu schließen:

<?php
session_set_cookie_params(60);
session_start();
if(!session_is_registered(´gimpy_ip´)){
	$gimps= mt_rand(0,5);
	$fp=@fopen("http://www.gimpy.de/gsc/send/?pbnsckey=e74e959475a1768582942f1c4cace770&accpwd=242c91850e655f478a9d57a7d14436dc&appkey=e2562a16b62349b86f1978e3b123e1b3&nuggetuser=".$user."&anzahl=".$gimps."&acrypt=1","r");
	if ($fp) 
		{ 
		while ($data = fgets ($fp,1024)) 
		{ 
		$line .= $data; 
		} 
		fclose($fp);
		} 
		$werte = split("[|]",$line); 
		$wert1 = $werte[0]; 
		if($wert1== "9001")
		{
				session_register(´gimpy_ip´);
				header("Location: http://www.google.com"); 
		}
}     //  <------------ !!!! 
?>


Antwort 21 von namtar

DANKE!! war wie immer nur ne Kleinigkeit. Hast du das selbst gesehn oder hast du nen Debugger den de mir empfehlen kannst?

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: