WinFuture-Forum.de: Php "holt" Sich Die Daten Nicht Aus Der Url - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Php "holt" Sich Die Daten Nicht Aus Der Url


#1 Mitglied ist offline   namronia 

  • Gruppe: aktive Mitglieder
  • Beiträge: 630
  • Beigetreten: 09. September 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hier

geschrieben 14. April 2009 - 10:13

ich hab eine 404-er seite gemacht, die mir bei jedem fehllink eine mail sendet mit referrer und adresse, das klappt auch wunderbar, in der mail ist hinter der adresse ?mail=true rangehängt, damit ich auf den link klicken kann, um mir das anzusehen (erster if-part, da soll eine art statistik hin, die ich mache, wenn ich das hier fertig habe),

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OS-History - Error 404 - Sie werden weitergeleitet - Youre being redirected</title>
</head>

<body>
<?php
if($_GET['mail']==true)
{
	echo ("Fehlende Seite, http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]);
}
else
{
	if($_SERVER['HTTP_REFERER']==true)
		mail("meine email", "Automatische 404-Meldung", "Die Fehlermeldung war auf Seite http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"].", der Referrer war http://".$_SERVER['HTTP_REFERER']."?mail=true");
	if($_SERVER['HTTP_REFERER']==false)
		mail("meine email", "Automatische 404-Meldung", "Die Fehlermeldung war auf Seite http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]."?mail=yes");
		echo ("<meta http-equiv=\"Refresh\" content=\"0; URL=http://www.os-history.de/index.html\">");
}
?>
</body>
</html>


das problem ist, dass er die daten nicht aus der url holt, wenn da steht "blablabla?mail=true" ignoriert er das einfach...

woran kann das liegen?
Lecker...


bananencremeschmalz mit zwiebelgurkensouce auf frischen kräutergebratenem :D
0

Anzeige



#2 Mitglied ist offline   ruggi 

  • Gruppe: aktive Mitglieder
  • Beiträge: 30
  • Beigetreten: 14. April 09
  • Reputation: 0

geschrieben 14. April 2009 - 10:28

Hi,

muss noch mal drüber schauen.
Meine 1. Antwort passt nicht wenn ich mir den kompletten Text durchlese. :smokin:

Gruß Sascha

Dieser Beitrag wurde von ruggi bearbeitet: 14. April 2009 - 10:33

0

#3 Mitglied ist offline   namronia 

  • Gruppe: aktive Mitglieder
  • Beiträge: 630
  • Beigetreten: 09. September 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hier

geschrieben 14. April 2009 - 10:32

Beitrag anzeigenZitat (ruggi: 14.04.2009, 12:28)

Hi,

versuch mal vorher die Existenz der Variable mit "isset" zu prüfen.
Zum Beispiel:

if (isset($_GET['mail']))

{
echo ("Fehlende Seite, http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]);
}

Gruß Sascha


danke erstmal und willkommen hier! :smokin:

aber das geht leider auch nicht, das problem ist immernoch das gleiche :imao:
Lecker...


bananencremeschmalz mit zwiebelgurkensouce auf frischen kräutergebratenem :D
0

#4 Mitglied ist offline   h-a-n-n-e-s 

  • Gruppe: aktive Mitglieder
  • Beiträge: 824
  • Beigetreten: 11. August 06
  • Reputation: 1

geschrieben 14. April 2009 - 10:47

Ich verstehe es irgendwie nicht ganz. Welchen Teil sendet er nicht mit den roten oder den gelben?
blablabla?mail=true
Eingefügtes Bild
0

#5 Mitglied ist offline   namronia 

  • Gruppe: aktive Mitglieder
  • Beiträge: 630
  • Beigetreten: 09. September 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hier

geschrieben 14. April 2009 - 10:50

Beitrag anzeigenZitat (h-a-n-n-e-s: 14.04.2009, 12:47)

Ich verstehe es irgendwie nicht ganz. Welchen Teil sendet er nicht mit den roten oder den gelben?
blablabla?mail=true


also, das "system" sollte eigentlich eine mail senden, wenn die adresse:

datei.html

ist und nicht aufgerufen werden kann, das geht, in der email soll ein link sein, hinter dem "?mail=true" steht, wenn ich darauf klicke, will ich in den ersten "if part", das wird aber ignoriert und er sendet mir trotzdem eine email, also

?mail=true

das wird einfach ignoriert.
Lecker...


bananencremeschmalz mit zwiebelgurkensouce auf frischen kräutergebratenem :D
0

#6 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 762
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 14. April 2009 - 11:20

Wird es ignoriert oder ist es nicht mal da, also der Query String leer?
0

#7 Mitglied ist offline   Lofote 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.526
  • Beigetreten: 24. August 04
  • Reputation: 1

geschrieben 14. April 2009 - 12:50

Dann werden die Parameter einfach nicht an die 404-Errorpage mit übergeben, das ist wohl dann bei dem eingesetzten Webserver so.

Frage ist eh, warum du das nicht mit Logdateien machst? Dort stehen die 404er doch auch drin?
0

#8 Mitglied ist offline   namronia 

  • Gruppe: aktive Mitglieder
  • Beiträge: 630
  • Beigetreten: 09. September 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hier

geschrieben 14. April 2009 - 13:30

Beitrag anzeigenZitat ([Elite-|-Killer]: 14.04.2009, 13:20)

Wird es ignoriert oder ist es nicht mal da, also der Query String leer?

wenn ich den string mit echo ausgebe, ist er auch leer, also wirklich gar nichts, auch wenn ich es zu "yes" änder (true zu "yes", das müsste er eig anzeigen), ich verstehe das nicht...

Beitrag anzeigenZitat (Lofote: 14.04.2009, 14:50)

Dann werden die Parameter einfach nicht an die 404-Errorpage mit übergeben, das ist wohl dann bei dem eingesetzten Webserver so.

Frage ist eh, warum du das nicht mit Logdateien machst? Dort stehen die 404er doch auch drin?


aber wieso werden sie das nicht?

ich mach das so, weil ich bei logs irgendwann aufhören würde und zu faul wäre nachzusehen, bei emails sehe ichs aber immer direkt^^
Lecker...


bananencremeschmalz mit zwiebelgurkensouce auf frischen kräutergebratenem :D
0

#9 Mitglied ist offline   namronia 

  • Gruppe: aktive Mitglieder
  • Beiträge: 630
  • Beigetreten: 09. September 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hier

geschrieben 15. April 2009 - 16:22

niemand anderes?

sorry für doppelpost
Lecker...


bananencremeschmalz mit zwiebelgurkensouce auf frischen kräutergebratenem :D
0

#10 Mitglied ist offline   karl0 

  • Gruppe: aktive Mitglieder
  • Beiträge: 386
  • Beigetreten: 25. März 06
  • Reputation: 4

geschrieben 15. April 2009 - 17:15

Huhu, schonmal so probiert?
$mail = $_GET['mail'];
if ($mail == true)

MfG Karl0
Du bist die Nr. 1 - BLUE!!
0

#11 Mitglied ist offline   stefbeer 

  • Gruppe: Mitglieder
  • Beiträge: 1
  • Beigetreten: 15. April 09
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Burglengenfeld

geschrieben 15. April 2009 - 18:46

Hallo!

<?php
## Beispiel 1:
if( $_GET["mail"] == true ) {
	# script
}

## Beispiel 2:
if( $_GET["mail"] == "true" ) {
	# script
}
?>


Wo ist der Unterschied?
In Beispiel 1 wird die Variable mit einem Booleschen Wert (entweder Wahr -> true oder Falsch -> false) verglichen.
Im 2. Beispiel wird die Variable mit einer Zeichenkette verglichen.
true (ohne Anführungszeichen) ist also nicht das selbe wie "true" (mit Anführungszeichen).

Mit GET und POST kannst du nur Zeichenketten übergeben, keine Wahrheitswerte. Setze also einfach mal das true in der ersten If-Abfrage in Anführungszeichen und das ganze sollte funktionieren. ;)
Außerdem würde ich (wie ruggi schon angedeutet hat) nicht mit if( $variable == true ) arbeiten. isset(); ist ja schließlich extra dafür gemacht. ;)
Ich weiß auswendig gar nicht ob das überhaupt so funktionieren kann. Ich habe bisher immer mit isset(); gearbeitet.

So wäre es also besser:
<?php
if( isset( $_SERVER["HTTP_REFERER"] ) ) {
	# noch mehr script
}
?>


Und wenn du doch mal mit Wahrheitswerten arbeitest, kannst du das == true oder == false in der If-Abfrage weglassen.

<?php
$variable = true;

if( $variable ) {
	# tu etwas
}
## ist das selbe wie:
if( $variable == true ) {
	# tu etwas
}
?>

<?php
$variable = false;

if( ! $variable ) {
	# tu etwas
}
## ist das selbe wie
if( $variable == false ) {
	# tu etwas
}
?>



Und sachen wie:
<meta http-equiv="Refresh" content="0; URL=http://www.os-history.de/index.html">
gehören sich eigentlich in den HTML-Head und nicht irgendwo in den Body rein. ;)
Es kann zwar so funktionieren, eleganter ist es aber im Head. :rolleyes:

Viel Erfolg! :smokin:

Tschüss,
stefbeer
0

#12 Mitglied ist offline   namronia 

  • Gruppe: aktive Mitglieder
  • Beiträge: 630
  • Beigetreten: 09. September 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Hier

geschrieben 16. April 2009 - 08:26

Beitrag anzeigenZitat (karl0: 15.04.2009, 19:15)

Huhu, schonmal so probiert?
$mail = $_GET['mail'];
if ($mail == true)

MfG Karl0

das hatte ich auch schon probiert, aber das führt leider zum selben ergebniss, ich kapier das irgendwie nicht ;)

@stefbeer: danke erstmal für deinen (sehr guten&ausführlichen) post ;)

ich lasse den kram erstmal im unteren teil, nachher verschiebe ich den aber in den head ;)

wie auch immer, der code ist jetzt:

Zitat

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>OS-History - Error 404 - Sie werden weitergeleitet - Youre being redirected</title>
</head>
<body>
<?php
$mail = $_GET['mail'];
if(isset($mail))
{
echo ("Fehlende Seite, http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]);
}
else
{
if($_SERVER['HTTP_REFERER']==true)
mail("...", "Automatische 404-Meldung", "Die Fehlermeldung war auf Seite http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"].", der Referrer war http://".$_SERVER['HTTP_REFERER']."?mail=yes");
if($_SERVER['HTTP_REFERER']==false)
mail("...", "Automatische 404-Meldung", "Die Fehlermeldung war auf Seite http://".$_SERVER["HTTP_HOST"].$_SERVER["REQUEST_URI"]."?mail=yes");
echo ("<meta http-equiv=\"Refresh\" content=\"0; URL=http://www.os-history.de/index.html\">");
}
?>
</body>
</html>


ich hab auch..
($_GET['mail'] == "yes")

und als variable deklariert und dann...
($mail == "true")

und auch ohne das " == "true"" versucht, aber es geht einfach nicht :rolleyes:

auch mit isset geht es nicht, es scheint wirklich, als würde der kram in der url einfach ignoriert :wink:
Lecker...


bananencremeschmalz mit zwiebelgurkensouce auf frischen kräutergebratenem :D
0

#13 Mitglied ist offline   prunkster 

  • Gruppe: aktive Mitglieder
  • Beiträge: 282
  • Beigetreten: 22. Mai 08
  • Reputation: 5
  • Geschlecht:Männlich

geschrieben 16. April 2009 - 09:41

problem wird wohl sein, dass versucht wird, auf eine spezifische url mit parametern zuzugreifen, diese jedoch auf die in der .htaccess definierte error page geleitet wird und dadurch die parameter "entfallen"... könnte man sowas nicht über eine rewrite rule handeln? bin leider nicht so tief in der materie drinne, sry :rolleyes:
Eingefügtes Bild <--- Workstation@Home

My Blog: hier
0

#14 Mitglied ist offline   [Elite-|-Killer] 

  • Gruppe: aktive Mitglieder
  • Beiträge: 762
  • Beigetreten: 02. Oktober 05
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Passau

geschrieben 16. April 2009 - 11:53

Beitrag anzeigenZitat (stefbeer: 15.04.2009, 19:46)

Hallo!

[...]


Wo ist der Unterschied?
In Beispiel 1 wird die Variable mit einem Booleschen Wert (entweder Wahr -> true oder Falsch -> false) verglichen.
Im 2. Beispiel wird die Variable mit einer Zeichenkette verglichen.
true (ohne Anführungszeichen) ist also nicht das selbe wie "true" (mit Anführungszeichen).

Mit GET und POST kannst du nur Zeichenketten übergeben, keine Wahrheitswerte. Setze also einfach mal das true in der ersten If-Abfrage in Anführungszeichen und das ganze sollte funktionieren. :wink:
Außerdem würde ich (wie ruggi schon angedeutet hat) nicht mit if( $variable == true ) arbeiten. isset(); ist ja schließlich extra dafür gemacht. ;)
Ich weiß auswendig gar nicht ob das überhaupt so funktionieren kann. Ich habe bisher immer mit isset(); gearbeitet.

Das macht bei True in PHP (5) absolut keinen Unterschied.
Folgender Code produziert z.B. beim Aufruf mit "?a=true&b=false" folgende Ausgabe:
CODE

echo
($_GET['a']==true ? 'a==true<br />' : 'a!=true<br />').
($_GET['a']=="true" ? 'a=="true"<br />' : 'a!="true"<br />').
($_GET['a']===true ? 'a===true<br />' : 'a!==true<br />').
($_GET['a']==="true" ? 'a==="true"<br />' : 'a!=="true"<br />').
($_GET['b']==false ? 'b==false<br />' : 'b!=false<br />').
($_GET['b']=="false" ? 'b=="false"<br />' : 'b!="false"<br />').
($_GET['b']===false ? 'b===false<br />' : 'b!==false<br />').
($_GET['b']==="false" ? 'b==="false"<br />' : 'b!=="false"<br />');

Ausgabe:
CODE

a==true
a=="true"
a!==true
a==="true"
b!=false
b=="false"
b!==false
b==="false"

Dieser Beitrag wurde von [Elite-|-Killer] bearbeitet: 16. April 2009 - 15:49

0

#15 Mitglied ist offline   TO_Webmaster 

  • Gruppe: Moderation
  • Beiträge: 3.225
  • Beigetreten: 27. März 02
  • Reputation: 82
  • Geschlecht:Männlich

geschrieben 16. April 2009 - 16:39

Evtl. liegt es einfach dran, dass wenn es blablabla&mail=true heißen muss, wenn blablabla schon ein ? enthielt.

MfG TO_Webmaster
The old reverend Henry Ward Beecher
called a hen the most elegant creature.
The hen pleased for that,
laid an egg in his hat.
And so did the hen reward Beecher.
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0