PHP wird zwar interpretiert aber nicht an die nächste Seite!

Alles, was PHP betrifft, kann hier besprochen werden.

PHP wird zwar interpretiert aber nicht an die nächste Seite!

Postby supremeDK1 » 24. February 2006 16:53

@first danke fürs helfen!

Folgendes Problem:

Jeglicher PHP Befehl wird erfolgreich interpretiert, übergebe ich aber eine Variable (beispiel.php?main=test) wird dieser nicht übergeben.

Dieses Phänomen habe ich schon bei einigen Freunden gesehen... Und die gleiche Seite funktioniert auf anderen XAMPP Servern.

MFG supremeDK1
-----------------------------------
Geben und nehmen ist wichtig!
-----------------------------------
supremeDK1
 
Posts: 6
Joined: 24. February 2006 16:40

Postby Wiedmann » 24. February 2006 17:03

Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby KingCrunch » 24. February 2006 17:08

register_globals
Jetz hab ich mir solche Mühe dabei gegeben, und jetz biste immer schneller :D
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby supremeDK1 » 25. February 2006 14:01

Erstmal Vielen Dank für die Hilfe,

@Wiedmann:
Soweit ich aus deiner Hilfe Seite erkennen konnte biettet das Hilfe für Get/Set und Cookies und Co. Ich benutze aber aber einen einfachen Link an den ich die Variablen übergebe.

@KingCrunch:
Ich habe das gleiche Xampp auf zwei verschiedenen Rechner installiert und das Skript funktioniert auf dem einen problemlos. Die Variablen habe ich auch nicht als global deklariert.

Deswegen bin ich ja so ratlos, da das Problem der überholten Methoden und Co meine erste Idee war zum nachschauen. :wink:
-----------------------------------
Geben und nehmen ist wichtig!
-----------------------------------
supremeDK1
 
Posts: 6
Joined: 24. February 2006 16:40

Postby Wiedmann » 25. February 2006 14:10

Soweit ich aus deiner Hilfe Seite erkennen konnte biettet das Hilfe für Get/Set und Cookies und Co. Ich benutze aber aber einen einfachen Link an den ich die Variablen übergebe.

Ein normaler Link ist ein GET.
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby supremeDK1 » 25. February 2006 16:05

Das stimmt natürlich. Aber trotzdem kann ich in Bezug auf den fehler mit der Site nicht viel anfangen, es funkt. sogar runtergeladene Skripte nicht, das muss ein Blocking oder so sein ... Ich benutze aber kein SP2 und der Text wird ja auch innerhalb der Site interpretiert
-----------------------------------
Geben und nehmen ist wichtig!
-----------------------------------
supremeDK1
 
Posts: 6
Joined: 24. February 2006 16:40

Postby KingCrunch » 25. February 2006 16:07

..., es funkt.

Ich hätte ne Theorie, worans liegt ;) (musste leider sein :D)
..., das muss ein Blocking oder so sein

Ein was?
Nicht jeder Fehler ist ein Bug ...
KingCrunch
 
Posts: 1724
Joined: 26. November 2005 19:25

Postby Wiedmann » 25. February 2006 16:19

Aber trotzdem kann ich in Bezug auf den fehler mit der Site nicht viel anfangen,

Deiner urspr. Fehlerbeschrienung nach verlässt du dich halt auf register_globals. Wie das korrekt funktionert siehst du im Manual.

es funkt. sogar runtergeladene Skripte nicht,

Dann poste doch ein kurzes! Demo das nicht funktioniert. Wobei ich dann lieber gar nicht wissen will, woher diese Scripte sind... Die Examples im Manual tun ja, oder nicht?
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby supremeDK1 » 25. February 2006 17:04

@ kingCrunch:

mit Blocking meinte ich das mein schönes Windows vielleicht irgendwelche Dienste blockt oder gar nicht startet, oder das meine Firewall (zoneAlarm) evt. das nicht erlaubt... Auf das andere Comment gehe ich ma gar nicht drauf ein ...

@Wiedmann

einige Skripte im Netz sind wirklich nicht sauber geschr. aber wenn es unter den gleichen Vorraussetzungen bei einem PC funzt und beim anderen nicht ist trotzdem komisch.

aber hier mal eine sehr einfaches Skript was nicht funktioniert:
<?php
if(!isset ($machma))
$machma = "machtnix";
?>
<html>
<head>
</head>
<body>
<?php
echo $machma;
?>
<br>
<a href="test.php?machma=machtwas">Link</a>
</body>
</html>

die isset-Methode macht er ohne zu nörgeln, aber die Übergabe an sich selbst nich..
-----------------------------------
Geben und nehmen ist wichtig!
-----------------------------------
supremeDK1
 
Posts: 6
Joined: 24. February 2006 16:40

Postby Wiedmann » 25. February 2006 17:45

einige Skripte im Netz sind wirklich nicht sauber geschr. aber wenn es unter den gleichen Vorraussetzungen bei einem PC funzt und beim anderen nicht ist trotzdem komisch.

Wieso komisch? PHP kann man halt verschieden einstellen. Und genau bei dem was bei dir nicht geht, hat sich die Defaulteinstellung bei PHP im Jahre 2002 geändert. Ein Grossteil der Programmierer leben halt trotzdem noch in der Steinzeit und tun so als wäre nichts passiert. Noch kann man ja PHP wie früher einstellen...

aber hier mal eine sehr einfaches Skript was nicht funktioniert:

.. oder besser so eine veraltete Syntax nicht mehr benutzen. Mit einem Blick ins Manual (Link siehe oben) wüsstest du ja wie es richtig geht... ;-)
Code: Select all
<?php
    if (!isset($_GET['machma'])) {
        $machma = 'machtnix';
    } else {
        $machma = $_GET['machma'];
    }
?>
<html>
    <head>
        <title>Testscript</title>
    </head>
    <body>
        <?php echo $machma; ?>
        <br>
        <a href="test.php?machma=machtwas">Link</a>
    </body>
</html>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby supremeDK1 » 25. February 2006 18:05

das ist ja klasse jetzt gehts. Der Fehler lag also daran das ich mir per GET die Var holen muss?

Trotzdem verstehe ich nicht das die gleiche xampp version mit den gleichen standardwerten und co so unterschiedlich mit dem skript umgehen.

PS: Ich arbeite zwar schon seit Jahren mit PHP, habe es aber selbst angeeigneet deswegen bin ich in den konventionen nicht so firm. werde da aber ab jetzt als erstes darauf achten! :lol:
---
Ich danke dir für die schnelle Hilfe und freue mich das in diesem Forum fragen beantwortet werden, ohne besondere Kommentare die den poster als dumm hinstellen. (Wie ich es in anderen Foren leider sehen musste!)
-----------------------------------
Geben und nehmen ist wichtig!
-----------------------------------
supremeDK1
 
Posts: 6
Joined: 24. February 2006 16:40

Postby Wiedmann » 25. February 2006 18:20

Der Fehler lag also daran das ich mir per GET die Var holen muss?

Im Prinzip ja. In so einem einfachen Fall könnte man auch direkt mit der GET-Variablen arbeiten ohne sie erst der lokalen Variablen ($machma) zuzuweise. Auf das $_GET-Array hast du ja Lese- und Schreibzugriff (und das superglobal, also auch in Funktionen).

Trotzdem verstehe ich nicht das die gleiche xampp version mit den gleichen standardwerten und co so unterschiedlich mit dem skript umgehen.

Ein unterschiedliches Verhalten der selben XAMPP-Version in diesem Verhalten kann nur dadurch zustandekommen, indem das eine eine Neuinstallation und das eine ein Upgrade ist. (--> eine bestimmte XAMPP-Version wird ja immer gleich ausgeliefert.)

Der Unterschied zu früher beim XAMPP ist, dass jetzt "register_globals = off" in der "php.ini" eingestellt ist, wie es der Standard fordert (früher war es "on").

PS: Ich arbeite zwar schon seit Jahren mit PHP, habe es aber selbst angeeigneet deswegen bin ich in den konventionen nicht so firm.

Trotzdem hier der Seitenhieb, dass man immer ins offizielle PHP-Manual schauen sollte (am besten das Englische) und sich nicht auf evtl. veraltete andere Seiten verlassen sollte ;-)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Postby supremeDK1 » 25. February 2006 18:52

ok, werde deinen Rat befolgen. Danke dir vielmals!
-----------------------------------
Geben und nehmen ist wichtig!
-----------------------------------
supremeDK1
 
Posts: 6
Joined: 24. February 2006 16:40

Postby juergen&lx » 25. February 2006 20:43

Hi zusammen.

Ich habe hier auch noch was zum diskutieren. Wiedmann wird die Hände über den Kopf zusammenschlagen :lol:, aber es funktioniert.
Mein Provider hat alles sehr restriktiv eingestell. :)
Code: Select all
//  VARIABLENÜBERGABE BEISPIEL zum ändern
if (isset($_POST['action']))
{
        $action = $_POST['action'];
        $findtitle = $_POST['findtitle'];
        $findname = $_POST['findname'];
        $where = $_POST['where'];
        $limit_num = $_POST['limit_num'];
        $limit = $_POST['limit'];
        $order_by1 = $_POST['order_by1'];
        $order_dir = $_POST['order_dir'];
        $order_by = $_POST['order_by'];
        $Seite = $_POST['Seite'];
        $titel_id = $_POST['titel_id'];
        $n = $_POST['n'];
        $m = $_POST['m'];
        $t = $_POST['t'];
        $Nummer=$_POST['Nummer'];
} else
if (isset($_GET['action']))
{
        $action = $_GET['action'];
        $findtitle = $_GET['findtitle'];
        $findname = $_POST['findname'];
        $where = $_GET['where'];
        $limit_num = $_GET['limit_num'];
        $limit = $_GET['limit'];
        $order_by1 = $_GET['order_by1'];
        $order_dir = $_GET['order_dir'];
        $order_by = $_GET['order_by'];
        $Seite = $_GET['Seite'];
        $titel_id = $_GET['titel_id'];
        $n = $_GET['n'];
        $m = $_GET['m'];
        $t = $_GET['t'];
        $Nummer=$_GET['Nummer'];
}
am Anfang der aufrufenden Datei. Alle Inludes arbeiten mit den selben Variablen. Ist nicht schön und sauber , "but it work's "

Jürgen
juergen&lx
 
Posts: 154
Joined: 18. February 2004 21:36
Location: in einem Dorf am Rande des Strombergs
Operating System: Linux

Postby Wiedmann » 25. February 2006 22:20

Hi Jürgen,

ist im Prinzip auch das Selbe wie oben ;-)

Halt auch in der einfachsten Form ohne Überprüfung auf Plausibilitiät, womit man dann theoretisch gleich im ganzen Script direkt mit den $_POST / $_GET - Variablen arbeiten könnte. Gerade z.B. bei $_SESSION ist der selbe Name für $_SESSION und lokale Variable sehr ungeschickt.

Man muss sich in dieser Form auch ganz sicher sein, dass jede andere Variable auch sicher übermittelt wird zusätzlich zum 'action', sonst erhält man Notice im weiteren Verlauf.

In deinem Fall könntest du auch auf das elseif verzichten und einfach die Daten aus $_REQUEST holen.

Dein Code könnte dann so aussehen (auch wenn variable Variablen evil sind *g*), wenn keine Sessions zu erwarten sind und Überprüfung der Vars fehlt halt auch noch.
Code: Select all
<?php
if (isset($_REQUEST['action'])) {
   $import_vars = array(
      'action', 'findtitle', 'findname', 'where', 'limit_num', 'limit',
      'order_by1', 'order_dir', 'order_by', 'Seite', 'titel_id',
      'n', 'm', 't', 'Nummer'
   );
   foreach ($import_vars as $value) {
      if (isset($_REQUEST[$value])) {
         ${$value} = $_REQUEST[$value];
      } else {
         ${$value} = '';
      }
   }
   unset($import_vars);
}
?>


Noch eine Möglichkeit wäre, importierte Variablen mit einem Prefix zu versehen und mit import_request_variables() die Varialen zu holen... oder wie schon gesagt gleich mit den $_GET / $_POST - Variablen zu arbeiten. (die kann man ja auch aus dem Script heraus setzten)
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

Next

Return to PHP

Who is online

Users browsing this forum: No registered users and 20 guests