weiterleitung mittels parameterübergabe
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
ansichtssache
aufrufen
code
dank
dateiname
funktion
header
http
machen
nichtmal
page
parameter
problem
sicherheit
sonderzeichen
teil
url
weiterleitung
zeile
zitat
-
hallo, ich möchte mir gerne ein parametergesteuertes weiterleitungsscript basteln, das ich wiefolgt aufrufen kann:
weiterleitung.php?page=www.google.at
diese seite sollte dann sofort auf google weiterleiten.
was muss ich in mein script einbauen, damit das mit dem parameter in der url funkioniert?
<?php header(\'location: http://www.blablabla.de/member/index.php\'); ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
probiere es mal so:
weiteleitung.php
<?php $querys = $_SERVER[\'QUERY_STRING\']; parse_str ($querys); header(\'location:\'.$page); ?>
dann soltest du es so aufrufen können:
www.irgentewas.wo/weiterleitung.php?page=sitezuderduwillst.de
gruss johannes
-
@joma93
Warum so kompliziert?
<?php header(\"Location: \".$_GET[\'page\']); ?>
Oder, um noch ein bisschen Sicherheit zu schaffen:
<?php $page = $_GET[\'page\']; if(substr($page,0,7) == \"http://\"){ header(\"Location: \".$page); }else{ echo \"Fehler!\"; } ?>
gruß
ferdinand24
Beitrag geändert: 11.2.2008 0:18:05 von ferdinand24 -
@ferdinand24:
ich mach es meistens so da ich häufig mehrere variabeln übergebe und da finde ich es angenehmer wenn ich nicht noch ein $_get[\'blablabla\'] schreiben muss
ist ansichtssache -
wie ist das mit der sicherheit beim verlinken gemeint?
lg
Sincer
So wird sichergegangen, dass auch wirklich eine valide Adresse per GET übergeben wird.
joma93 schrieb:
@ferdinand24:
ich mach es meistens so da ich häufig mehrere variabeln übergebe und da finde ich es angenehmer wenn ich nicht noch ein $_get[\\\'blablabla\\\'] schreiben muss
ist ansichtssache
Nur in dem Fall viel zu umständlich und es kostet mehr Rechenleistung. -
<?php header(\"Location: \".$_GET[\'page\']); ?>
Danke, ich habe es doch auf diese einfache art gelöst!
lg
Vali -
hallo leute
schonmal vorab, ich bin php newbie.
Projekt : ich baue eine eigene umleitungsseite wie zb http://anonym.to/?http://example.de
so hab ich es realisiert =
<meta http-equiv=\"refresh\" content=\"5; URL=<?php echo $_GET[\"id\"];?>\">
das funzt eigentlich gut nur das problem ist wenn ich auf mein forumtheard verweise zb
http://example.de/phpbb3/viewtopic.php?f=6&t=140
verwirrt sich die weiterleitung wegen dem & zeichen im link
am ende kommt nur noch
http://example.de/phpbb3/viewtopic.php?f=6 ohne &t=140
was muss ich da machen?
-
Die Sonderzeichen müssen hierbei in HTML umgewandelt werden, also in dem Fall für & %26 . Dies dürfte funktionieren.
Beitrag geändert: 19.3.2008 10:01:36 von steffens -
Die Sonderzeichen müssen hierbei in HTML umgewandelt werden, also in dem Fall für & %26 . Dies dürfte funktionieren.
Beitrag geändert: 19.3.2008 10:01:36 von steffens
sehr gut es funzt, danke dachte nicht das es so einfach geht :)
eine frage noch dazu könnte man es so realesieren das es die & auromatisch in %26 umwandel, damits perfekt ist?
ich habs mit der funktion versucht
<meta http-equiv=\"refresh\" content=\"5; URL=<?php echo $_GET[\"id\"]; echo htmlentities($str, ENT_QUOTES);?>\">
Beitrag geändert: 19.3.2008 13:22:01 von vadi -
<meta http-equiv=\"refresh\" content=\"5; URL=
<?php $url = $_GET[\"id\"]; $url2 = str_replace ( \'&\', \'%26\', $url );
echo $url2; ?>\">
vll so^^
Beitrag geändert: 19.3.2008 14:26:38 von rpgmacher -
also danke für die schnelle antwort ,aber leider ersetzt ers nicht bleibt immer noch das & in der url..
mfg -
http://de3.php.net/manual/de/function.urlencode.php
-
Danke nochmal super forum!:)
wie gesagt ich bin php anfänger (hab mit htmls chon meine problems^^)
ich habs so versucht einzubauen:
<meta http-equiv=\"refresh\" content=\"5; URL=<?php echo, urlencode $_GET[\"?\"];?>\"> -
Hilft mir keiner letes mal mehr ? :( please
-
<meta http-equiv=\"refresh\" content=\"5; URL=<?php echo urlencode($_GET[\'id\']);?>\">
-
<meta http-equiv=\"refresh\" content=\"5; URL=<?php echo urlencode($_GET[\'id\']);?>\">
geht so leider auch nicht :(
\"theard exsestiert nicht\" dadurch geht auch %26 nichtmal irgendwie komisch
Beitrag geändert: 20.3.2008 22:36:46 von vadi -
<meta http-equiv=\"refresh\" content=\"5; URL=<?php echo urlencode($_GET[\'id\']);?>\">
bist du 100 % sicher das \"urlencode\" so richtig eingebaut ist?#
gibs hier einen der anhung von php hat das is doch kiddi problem^^ -
Ich vermute mal, dass der PHP-Parser damit ein Problem hat.
Das lässt sich auch recht logisch erklären, denn du sagst ihm: \"Nimm alles was nach id in der URL steht\", und genau das macht er auch. Nun weiß der Parser aber, wenn ein & kommt, beginnt die nächste Variable, was in deinem Fall t=140 wäre, also hört er dort auf, denn für ihn endet id dort.
Du hast also eigentlich nur die Möglichkeit, die URL komplett zu nehmen, nach den ersten Vorkommen von id zu suchen und alles anderes danach mit für deine Weiterleitung zu verwenden. Du musst es quasi von Hand machen, da den Parser nunmal nicht so ändern kannst, dass er auf einmal nicht mehr das macht, was ihm gesagt wurde.
edit
Eigentlich ist es sogar noch einfacher. Mit $_SERVER[\'QUERY_STRING\'] kannst du alle Parameter einer URL auslesen. Als Beispiel:
<? // gesamte URL ist http://anonym.to/?link=http://example.de/phpbb3/viewtopic.php?f=6&t=140 echo $_SERVER[\'QUERY_STRING\']; // liefert link=http://example.de/phpbb3/viewtopic.php?f=6&t=140 echo substr($_SERVER[\'QUERY_STRING\'],5); liefert http://example.de/phpbb3/viewtopic.php?f=6&t=140 ?>
Die Weiterleitung dann wie oben mit dem Meta-Refresh, urlencode brauchst du dabei eigentlich nicht.
Beitrag geändert: 21.3.2008 17:01:42 von tct -
Ja tct, das der Parser & als nächsten Parameter erkennt ist mir auch grad aufgefallen. Ich habs jetzt so gelöst:
<?php $seite = $_SERVER[\'argv\'][0]; if(strrpos($seite, \'/\') < 7) { $seite = $seite.\'/\'; } if(substr($seite,0,7) != \'http://\') { $seite = \'http://\'.$seite; } $teil1 = substr($seite, 0, strrpos($seite, \'/\')+1); $teil2 = urlencode(substr($seite, strrpos($seite, \'/\')+1)); header(\'location: \'.$teil1.$teil2); ?>
Sogar mit Fehlerabfragen
In Zeile Zwei wird alles übernommen, was nach \'dateiname.php?\' steht. Man braucht also nichtmal einen Variablennamen.
In Zeile 3-4 wird ein \'/\' angehängt, wenn jemand zum Beispiel nur \'http://www.google.de\' schreibt (Ist für die spätere Funktion wichtig)
Für Zeile 6-7 gilt das gleiche, nur mit \'http://\' am Anfang.
Dann wird der mitgegeben String in Servername mit Pfad und Dateiname mit evtl. Parametern geteilt. Der Datei/Parameterteil wird urlencoded um in URL reservierte Zeichen zu maskieren. (Ob es unbedingt nötig ist kann man drüber streiten, aber es ist so auf jeden Fall besser denke ich)
Und danach wird mit header(\"location: ...\"); weitergeleitet, funktioniert alternativ auch mit <meta http-equiv...>
Beitrag geändert: 21.3.2008 17:41:08 von kochmarkus -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage