Variablenübergabe im Link (lokal)

Herr Sin

Herr Sin

Aktives Mitglied
Thread Starter
Dabei seit
10.04.2003
Beiträge
123
Reaktionspunkte
2
Hallo Leute

Habe ein kleines (lokales) Problem.

Ich habe eine Datei. Da steht eigentlich nur folgendes drin:
PHP:
<? print "Die ID lautet $id"; ?>

Dann ruf ich die Datei wie folgt auf:

PHP:
test.php?id=12

Da sollte ich doch auch beim Aufruf die 12 zu sehen bekommen. Aber lokal bekomme ich nix.

Aber mit
PHP:
<? phpinfo() ?>
seh ich, daß PHP installiert ist. Auch phpMyAdmin läuft lokal.

Habe ich irgendwas vergessen? Fange erst etwas an mit PHP. Bin schon froh, daß ich MySQL und PHP zum laufen gebracht habe :) Danke mal für eure Hilfe.
 
versuchs mal mit
PHP:
<?php
echo $_GET['id'];
?>
 
Original geschrieben von ment
versuchs mal mit
PHP:
<?php
echo $_GET['id'];
?>
&nbsp;Son Mist. Da zeigt mir Safari gar nix an. Quelltext anschauen: leer, nix, nada...

Aber ich versteh das nicht. Beim Provider im Netz tut meine Variante. Was läuft da falsch? ist evtl. PHP falsch konfiguriert? Wo kann ich das nachschauen?
 
Hallo Herr Sin,

bastel Dir mal eine Datei, welche folgenen Link beinhaltet:

test.php?id=12


Wenn Du nun auf diesen Link klickst und die Variable in der
Datei "test.php" mittels '$_GET[id]' abfragst, sollte es funk-
tionieren.


Gruß
Delmar
 
mach mal echo :)
ist doch schöner.. hehe

also wenn
PHP:
<?php
echo "blabla";
?>

nichts ausgibt liegts an deiner installation
 
Original geschrieben von Herr Sin
Aber mit
PHP:
<? phpinfo() ?>
seh ich, daß PHP installiert ist. Auch phpMyAdmin läuft lokal.
&nbsp;

Naja, PHP scheint ja zu laufen ... :cool:
 
Du mußt die globalen Variablen aktivieren.
Unter MacOS X v10.3 legst du als root im Ordner /etc die Datei php.ini an.
Dort schreibst du mit BBEdit oder im Terminal mit pico den einfachen Text:
register_globals=On

Speicherst die Datei und startest auch als root den ApacheServer neu mit:
apachectl graceful

Unter MacOS X v10.2 oder früher legst du die Datei in dem Ordner an, wie er in dem phpinfo(); bei dem Punkt "Configuration File (php.ini) Path" angegeben ist. Der Punkt ist in meiner phpinfo(); der 5 von oben.
 
Original geschrieben von Delmar
bastel Dir mal eine Datei, welche folgenen Link beinhaltet:

test.php?id=12


Wenn Du nun auf diesen Link klickst und die Variable in der
Datei "test.php" mittels '$_GET[id]' abfragst, sollte es funk-
tionieren.
&nbsp;Da bekomme ich auch nix zu sehen. Quelltext bleibt absolut leer. Wohl bemerkt: immer alles lokal.

Original geschrieben von kazi
mach mal echo :)
ist doch schöner.. hehe

also wenn
PHP:
<?php
echo "blabla";
?>

nichts ausgibt liegts an deiner installation
&nbsp;Langsam versteh ich gar nix mehr. Mit echo bekomm ich nix. Einfach leer.



Original geschrieben von sungeri
Du mußt die globalen Variablen aktivieren.
Unter MacOS X v10.3 legst du als root im Ordner /etc die Datei php.ini an.
Dort schreibst du mit BBEdit oder im Terminal mit pico den einfachen Text:
register_globals=On

Speicherst die Datei und startest auch als root den ApacheServer neu mit:
apachectl graceful

Unter MacOS X v10.2 oder früher legst du die Datei in dem Ordner an, wie er in dem phpinfo(); bei dem Punkt "Configuration File (php.ini) Path" angegeben ist. Der Punkt ist in meiner phpinfo(); der 5 von oben.
&nbsp;Habe ich gemacht. Aber bei apachectl graceful bekomme ich folgende (Fehler-)Meldung:
/usr/sbin/apachectl graceful: httpd not running, trying to start
Processing config directory: /private/etc/httpd/users/*.conf
Processing config file: /private/etc/httpd/users/katrin.conf
Processing config file: /private/etc/httpd/users/marc.conf
[Tue Dec 30 23:39:35 2003] [warn] module mod_php4.c is already added, skipping
fopen: Permission denied
httpd: could not open error log file /private/var/log/httpd/error_log.
/usr/sbin/apachectl graceful: httpd could not be started


Ich habe OS 10.3.1. Habe ich evtl. an irgendeiner config-Datei zuviel rumgespielt? Obwohl ich sowas ja nicht mach - aber möglich ist alles. Ich denke, irgenwo läuft PHP oder der webserver nicht sauber, oder?

Dank euch schon für die Mühe und die Hilfe.
 
moin!

Ich kann dir zwar heut nicht mehr helfen *müdeichbin* aber du kannst mir mal eine e-mail schreiben mit dem code der nicht funzt(das ganze *.php file).
Ich schicke dir dann denn funktionierenden code :D :D aber erst morgen *schlafenichjetztgeh*;) ;) ;)

Achja noch ein kleiner vermerk. PHP ist server seitig d.h. das dir der quellcode nicht im Browser angezeigt wird .Du kannst in der Quellcode ansicht nur HTML,Javascript,CSS und noch ein paar andere Sprachen sehen.

mfg janosch

P.S. meine e-mail: jan-carsten@gmx.de
 
Zuletzt bearbeitet:
Original geschrieben von janosch
moin!

Ich kann dir zwar heut nicht mehr helfen *müdeichbin* aber du kannst mir mal eine e-mail schreiben mit dem code der nicht funzt(das ganze *.php file).
Ich schicke dir dann denn funktionierenden code :D :D aber erst morgen *schlafenichjetztgeh*;) ;) ;)

Achja noch ein kleiner vermerk. PHP ist server seitig d.h. das dir der quellcode nicht im Browser angezeigt wird .Du kannst in der Quellcode ansicht nur HTML,Javascript,CSS und noch ein paar andere Sprachen sehen.
&nbsp;Der Code ist der, der hier obe steht. Mehr nicht. Ich will nur die $ID angezeigt bekommen.

Daß ich den PHP-Code nicht seh weiß ich, aber es sollten doch mindestens die HTML-Codes zu sehenn sein, wie <head> oder <title>. Aber ich sehe gar nichts im Quellcode (wörtlich nehmen). Eine absolut leere Seite. Selbst kein HTML-Code.
 
Wenn Du in das PHP Skript keinen HTML-Code eintippst, wirst Du auch im
Browser keinen HTML-Code erkennen können.


link.php
PHP:
<?php 

echo "<a href=\"test.php?id=12\">klick mich</a>";

?>


test.php
PHP:
<?php 

echo $_GET[id];

?>


Mit dem Vorschlag von sungeri hast Du Dir Deine "php.ini" aber auch erstmal
schön zerschossen. Unter Panther ist diese Datei nämlich schon vorhanden.
An der musst Du gar nichts machen.

Wenn Du Dir im Finder alle versteckten und Systemdateien anzeigen lässt,
kannst Du auch unter Deinem Account in den /etc/ Ordner. Hier liegt noch
eine "php.ini.default" Datei. Lösche die "php.ini" und lösche das ".default"
bei der anderen Datei.

Dann gehst Du in die Systemeinstellungen -> Sharing und startest den
Dienst "Personal Web Sharing" neu. Danach sollte eigentlich alles
funktionieren.


Gruß
Delmar
 
Ja, Delmar. Die Datei ist noch nicht vorhanden. Lediglich die default Datei ist vorhanden. Wenn du keine php.ini Datei anlegst, werden die Standardwerte genutzt. Jeder Eintrag, den du in der php.ini einträgst oder veränderst, wird bei einem Apache Neustart übernommen.

Standardmäßig sind die globalen Variablen deaktiviert!!! Man kann sie einfach aktivieren, indem man in der php.ini den Eintrag "register_globals" auf "On" setzt! Du kannst jetzt die default-Datei hernehmen und den Wert darin ändert. Es handelt sich um die Datei, in welcher die Standardwerte von PHP enthalten sind. (Daher auch der Name "default".) Oder du nimmst eine neue leere Datei her. Alle darin enthaltenen Einträge werden in den Standardwerten (auch default-Werte) geändert! Alle anderen bleiben unverändert.

Mit Gruß
sunni
 
Hallo sungeri,

siehst Du, wieder was dazugelernt. Ich hatte immer gedacht, dass die php.ini
auf jeden Fall vorhanden sein muss, aber dem schein ja nu' nicht so.

Danke dafür! :)


Gruß
Delmar
 
Okay. Die Variablenübergabe hat funktioniert.

Auch seh ich nun endlich den Quellcode. Der Fehler lag in einem falschen (ungültigem?) Leerzeichen irgendwo im PHP-Code. Habe alle Leerzeichen durch Leerzeichen ersetzt (lustig, oder?). Dann hat es funktioniert.

Habe dafür ein anderes kleines Problem. Vielleicht bekomm ich es aber auch hin. Ansonsten frag ich einfach wieder nach.

Trotzdem vielen Dank an allen.
 
Original geschrieben von sungeri
Ja, Delmar. Die Datei ist noch nicht vorhanden. Lediglich die default Datei ist vorhanden. Wenn du keine php.ini Datei anlegst, werden die Standardwerte genutzt. Jeder Eintrag, den du in der php.ini einträgst oder veränderst, wird bei einem Apache Neustart übernommen.

Standardmäßig sind die globalen Variablen deaktiviert!!! Man kann sie einfach aktivieren, indem man in der php.ini den Eintrag "register_globals" auf "On" setzt! Du kannst jetzt die default-Datei hernehmen und den Wert darin ändert. Es handelt sich um die Datei, in welcher die Standardwerte von PHP enthalten sind. (Daher auch der Name "default".) Oder du nimmst eine neue leere Datei her. Alle darin enthaltenen Einträge werden in den Standardwerten (auch default-Werte) geändert! Alle anderen bleiben unverändert.

Mit Gruß
sunni
&nbsp;

Vielen Dank an sunni und allen anderen.

Ich hatte auch das Problem, dass mir die Variablen, welche ich mit der URL mitgegeben habe, auf dem Localhost in der phpdatei nicht angezeigt hat. Nach dem Tipp von sunni habe ich die php.ini.default im Terminal zu php.ini kopiert und die register_globals auf on gesetzt. Und voila, es funzt :music

So, jetzt kann ich mich endlilch auf die Mütze hauen.
Liebe Grüsse
Speedy
 
ich möchte auch nochmal einen großen Dank aussprechen, hatte das Gleiche Problem und ihr habt mir geholfen clap

Jetzt hab ich allerdings ein anderes Problem, was sich anscsheinend aus dieser Veränderung ergeben hat, kurze Zeit lief alles glatt, aber heute bekam ich beim Aufrufen meines PHP Scriptes folgende Fehlermeldng:
Warning: Unknown(/Users/***/Sites/osx/index.php): failed to open stream: Permission denied in Unknown on line 0

Warning: (null)(): Failed opening '/Users/***/Sites/osx/index.php' for inclusion (include_path='.:/usr/local/php/lib/php') in Unknown on line 0

Komischer Weise funktionieren andere PHP Skripts (wie PHPmyadmin). Andere HTML Seiten werden auch aufgerufen, nur nicht in diesem Ordner. Sobald ich die Dateien aus dem ordner in einen funktionierenden kopiere, gehts komischer weise auch nicht mehr. Die PHP Skripte verändern garantiert nichts an den Rechten, und ich hab auch nichts dran rumgedeichselt, kann sich jemand vorstellen was das für ein Problem ist? Ich bin total ratlos und sehr traurig, weil ich dachte, dass endlich mal alles funktioniert. :(
 
Zuletzt bearbeitet:
guter tip! habe auch schon verzweifelt rumgeflucht, weil viele beispiele aus büchern nicht funktioniert haben.

aber es bleiben doch noch 2 fragen:

- welche variante wird häufiger in der praxis eingesetzt? (es nützt mir ja nichts, wenn ich die php skripte für einen provider wieder umschreiben muss, obwohl es auf meinem local host funzt).

- kann man das problem auch anders umgehen (mit nem include o.ä.)?

- reicht es aus statt "get" "post" zu verwenden um die sicherheit, beispielsweise bei der übergabe von passwörtern zu gewährleisten? oder kann so auf meiner db eingebrochen werden (dürfte sich zwar eh keiner die mühe machen, weil uninteressant, aber egal ... interessiert mich halt ;-)

danke und gruss
alex
 
Hallo Xelat,

zu 1: In der Praxis wird, wenn man ein neues Projekt beginnt, natürlich mit
$_GET[] bzw. $_POST[] gearbeitet, da diese keine bis dato bekannten Sicher-
heitsrisiken ausweisen. Die Provider stellen aber, aus dem einfachen Grund,
dass es noch sehr viele Skripte gibt, die mit Globalen Variablen arbeiten,
diese auf "On".

zu 2: Auch mit einem "include" Befehl musst du ja auf den Inhalt der
Variable, die vorher versendet wurde, zugreifen. Auch dies wird über die
bereits beschriebene Methode gemacht. Da Du in diesem Fall ja prinzipiell ja
nichts anderes machst als anstatt einer separaten Datei, die ursprüngliche
nochmals aufzurufen. Von daher bleibt der Effekt der gleiche.

zu 3: Gerade der von Dir beschriebene Fall hat dazu geführt, dass es
eine andere Lösung, die mit $_GET[], $_POST[], ... gibt, um genau solche
Sicherheitslöcher, die bei den Globalen Variablen existieren, zu schließen.
Bei $_GET[] und Co. ist es, wie schon gesagt, bis dato nicht bekannt, dass
man es in irgendeiner Art und Weise "knacken" kann. Wobei ich dies ohne
Gewähr von mir gebe, da ich mir nicht 100%ig sicher bin. Jedenfalls ist mir
nichts anderes bekannt.


Ich hoffe, ich konnte Deine Fragen einiger Maßen beantworten. Der eine
oder andere wird sicherlich noch ein paar Ergänzungen bzw. Korrekturen
parat haben. :D


Gruß
Delmar
 
hi delmar,

vielen dank für die antworten. hat mir weitergeholfen.
lg alex
 
Hat mir auch geholfen...

hiya,
supi hier hab ich prompt die lösung für mein problem gefunden!
doch jetzt habe ich doch noch eine frage wie es dann weitergeht :)
weise ich die werte der variablen dann gleich einer lokalen variablen zu?
z.b. sowas:
PHP:
$meinevar = $_GET["formularvar"];
würde meines erachtens sinn machen, hätte es nur gerne von jemand bestätigt :D

grüßle
alex
 
Zurück
Oben Unten