unbekannte Variable action?????!!!!!
unbekannte Variable action?????!!!!!
Sers Leutz, ich hab n kleines Problem.. auf der Arbeit hab ich ein gästebuch geschriebn und mir nach hause geschickt, aber zuhause funktioniert das scheiss ding nicht mehr.
an mehrerern stellen bekommne ich die Antwort: unbekannte variable.
aber was ist an diesen Stellen falsch:
.
blabla
.
if ($action == "insert") // hier erkennt er die Variable nicht... ?? ;-(
.
bllaba
.
<form action="./insert.php" enctype="multipart/form-data">
<input name="action" type="hidden" value="insert">
.
blabla
.
an mehrerern stellen bekommne ich die Antwort: unbekannte variable.
aber was ist an diesen Stellen falsch:
.
blabla
.
if ($action == "insert") // hier erkennt er die Variable nicht... ?? ;-(
.
bllaba
.
<form action="./insert.php" enctype="multipart/form-data">
<input name="action" type="hidden" value="insert">
.
blabla
.
Re: unbekannte Variable action?????!!!!!
Hi,
vielleicht auf der Arbeit register_globals on und zu Hause off (-> so wie's sein sollte ! ). Wenn die Variable über ein Formular übergeben wird, dann versuch's mal hiermit:
oder wenn die Variable über die URL übergeben wird hiermit:
so long
static
vielleicht auf der Arbeit register_globals on und zu Hause off (-> so wie's sein sollte ! ). Wenn die Variable über ein Formular übergeben wird, dann versuch's mal hiermit:
Code: Select all
if ($_POST['action'] == "insert")Code: Select all
if ($_GET['action'] == "insert")static
-
stefanpropehan
- Posts: 335
- Joined: 2002-12-17 22:25
- Location: Berlin
Re: unbekannte Variable action?????!!!!!
Probiere es mal mit ...
stichwort RegisterGlobals.... bzw register_argc_argv
upps zu langsam :(
Code: Select all
if($_REQUEST['action] == "insert")upps zu langsam :(
Re: unbekannte Variable action?????!!!!!
Erst mal danke für eure P0575! *g*
Leider hat mir keine der Antworten wirkl. weitergeholfen.
Wenn ich den Nehme bekomm ich folgendes Resultat:
Notice: Undefined index: action in c:programmeeasyphp1-7wwwtestinsert.php on line 11
bei dem das gleiche
und bei nummer 3 ebenfalls:
Ich hab keinen schimmer was an dem von mir gewählten befehl nicht funktioniert.
Wie aktivier ich zu Hause die register_globals??
bzw.: Was ist das, wie ist es besser, an oder aus ?
und was ist :register_argc_argv
Leider hat mir keine der Antworten wirkl. weitergeholfen.
Code: Select all
if ($_POST['action'] == "insert")Notice: Undefined index: action in c:programmeeasyphp1-7wwwtestinsert.php on line 11
bei dem das gleiche
Code: Select all
if ($_GET['action'] == "insert")Code: Select all
if($_REQUEST['action'] == "insert")Ich hab keinen schimmer was an dem von mir gewählten befehl nicht funktioniert.
Wie aktivier ich zu Hause die register_globals??
bzw.: Was ist das, wie ist es besser, an oder aus ?
und was ist :register_argc_argv
Re: unbekannte Variable action?????!!!!!
Vielleicht hilft euch ja das hier, oder sagt euch was:
Wenn ich über PHPmyAdmin zu meiner SQL-Datenbank connecte, geht alles wunderbar, kann alles bearbeiten, aber ganz klein, und übersehbar steht das hier:
klicke ich auf hier, bekomme ich diese Meldung
klicke ich hier wiederum auf Dokumentation, bekomme ich das hier auf den Screen:
Wenn ich über PHPmyAdmin zu meiner SQL-Datenbank connecte, geht alles wunderbar, kann alles bearbeiten, aber ganz klein, und übersehbar steht das hier:
Code: Select all
Fehler
Die zusätzlichen Funktionen für verknüpfte Tabellen wurden automatisch deaktiviert. Klicken Sie hier um herauszufinden warum.
Code: Select all
PMA Database ... fehlerhaft[ Dokumentation ]
Allgemeine Verknüpfungsfunktionen Deaktiviert
Code: Select all
$cfg['Servers'][$i]['pmadb'] string
Starting with version 2.3.0 phpMyAdmin offers a lot of features to work with master / foreign - tables. To use those as well as the bookmark feature you need special tables with a predefined structure, which we explain below.
See the Quick Install section in this document for a quick way of creating those tables. Also, if you are using a Windows server, read FAQ 1.23.
If you are the only user of this phpMyAdmin installation, you can use your current database to store those special tables; in this case, just put your current database name in $cfg['Servers'][$i]['pmadb'].
If you are setting up a multi-user phpMyAdmin installation, you will need to create a new database and setup special privileges, so, as superuser:
create a new database for phpMyAdmin:
CREATE DATABASE phpmyadmin;
Note that "controluser" must have SELECT, INSERT, UPDATE and DELETE privileges on this database. Here is a query to set up those privileges (using "phpmyadmin" as the database name, and "pma" as the controluser):
GRANT SELECT,INSERT,UPDATE,DELETE ON phpmyadmin.* to 'pma'@'localhost';
do not give any other user rights on this database.
enter the database name in $cfg['Servers'][$i]['pmadb']
$cfg['Servers'][$i]['bookmarktable'] string
Since release 2.2.0 phpMyAdmin allows to bookmark queries. This can be useful for queries you often run.
To allow the usage of this functionality you have to:
set up "pmadb" as described above
within this database create a table following this scheme:
CREATE TABLE `PMA_bookmark` (
id int(11) DEFAULT '0' NOT NULL auto_increment,
dbase varchar(255) NOT NULL,
user varchar(255) NOT NULL,
label varchar(255) NOT NULL,
query text NOT NULL,
PRIMARY KEY (id)
) TYPE=MyISAM COMMENT='Bookmarks';
enter the table name in $cfg['Servers'][$i]['bookmarktable']
Re: unbekannte Variable action?????!!!!!
Das ist eine Zusatzfunktion von phpMyAdmin und dürfte mit deinem Problem nicht das geringste zu tun haben. Leider kann ich dir aber auch keinen anderen Lösungsvorschlag anbieten, sorry.
Re: unbekannte Variable action?????!!!!!
Hallo,
Datei form.htm:
Datei insert.php:
funktioniert bei mir mit register_globals=off.
register_globals sollte aus Sicherheitsgründen (hauptsächlich Sicherheit gegen fehlerhafte oder unsaubere Scripts) unbedingt abgeschaltet bleiben.
register_argc_argv hat mit Deinem Problem nichts zu tun.
Gruß, Wolfgang
Datei form.htm:
Code: Select all
<form action="./insert.php" enctype="multipart/form-data">
<input name="action" type="hidden" value="insert">
<input type="submit" value="senden">
</form>
Code: Select all
<?php
if ($_REQUEST['action'] == "insert")
{ echo "ok"; }
else
{ echo "not ok"; }
?>
register_globals sollte aus Sicherheitsgründen (hauptsächlich Sicherheit gegen fehlerhafte oder unsaubere Scripts) unbedingt abgeschaltet bleiben.
register_argc_argv hat mit Deinem Problem nichts zu tun.
Gruß, Wolfgang
Re: unbekannte Variable action?????!!!!!
Hi,
besser ist:
da sonst die superglobale Variable $action, falls sie nicht übertragen wird, nicht initialisiert ist und eine Warning bringt.
bye
arty
besser ist:
Code: Select all
<?php
if (isset($_REQUEST["action"]) && $_REQUEST["action"] == "insert")
{ echo "ok"; }
else
{ echo "not ok"; }
?> bye
arty
Re: unbekannte Variable action?????!!!!!
Tut momentan ebenfalls auf der Arbeit, mal gespannt wie es zuhause ablaufen wird.... *g*
Hoffe, dass es da ebenfalls geht..
An was kann das liegen?
andere php version?
andere mysql version?
andere easyphp version?
Was spielt davon die wichtigste Rolle ?
Hoffe, dass es da ebenfalls geht..
An was kann das liegen?
andere php version?
andere mysql version?
andere easyphp version?
Was spielt davon die wichtigste Rolle ?
Re: unbekannte Variable action?????!!!!!
Wie ist die Fehlerausgabe in Deiner php.ini eingestellt? Sind das wirklich Fehler, oder nur Warnungen?
Warnungen sind zum Beispiel nicht so heikel und werden normalerweise auch nicht angezeigt. Ausser, es ist so in der php.ini eingestellt.
Wenn man z.B. eine Variable abfragt, die noch nicht existiert, bekommt man eine Warnung. So wie in Deinem Beispiel ;)
Warnungen sind zum Beispiel nicht so heikel und werden normalerweise auch nicht angezeigt. Ausser, es ist so in der php.ini eingestellt.
Wenn man z.B. eine Variable abfragt, die noch nicht existiert, bekommt man eine Warnung. So wie in Deinem Beispiel ;)
Re: unbekannte Variable action?????!!!!!
Danke, das wars.....
Super echt fette Sache! *freu mit luftsprung mach*
Seit 5 Tagen zerbrech ich mir den Kopf...... Ahhhhhhh
Also, an alle die nicht Mitgekommen sind, wenn ihr Solche "Notices" (keine Errors) bekommt..
1. geht in die php.ini
und ändert :
in:
d.h. es werden alle errors angezeigt, bis auf "notices"
nochmal danke & so long dognose
Super echt fette Sache! *freu mit luftsprung mach*
Seit 5 Tagen zerbrech ich mir den Kopf...... Ahhhhhhh
Also, an alle die nicht Mitgekommen sind, wenn ihr Solche "Notices" (keine Errors) bekommt..
1. geht in die php.ini
und ändert :
Code: Select all
error_reporting = E_ALLCode: Select all
error_reporting = E_ALL & ~E_NOTICEnochmal danke & so long dognose
Re: unbekannte Variable action?????!!!!!
Ok, das war zu früh gefreut.... aber nun
ebenfalls in der php.ini war es noch nötig statt:
zu setzen...
Sollte zwar ne sicherheitslücke oder so bilden, aber das dürfte für mein Angestrebtes "Lan-Gästebuch" kein Problem darstellen..
thx to all ! ! !
ebenfalls in der php.ini war es noch nötig statt:
Code: Select all
register_globals = OffCode: Select all
register_globals = OnSollte zwar ne sicherheitslücke oder so bilden, aber das dürfte für mein Angestrebtes "Lan-Gästebuch" kein Problem darstellen..
thx to all ! ! !
Re: unbekannte Variable action?????!!!!!
*autsch* Seit wann sind nicht abzuschätzende Sicherheitsrisiken kein Problem?
Re: unbekannte Variable action?????!!!!!
Hallo,
na ja, Du hast eine Lösung gefunden, die Fehlermeldungen zu beseitigen, sinnvoller ist es, die Fehler zu beseitigen.
für jede Variable, die an das Script übergeben werden kann.
Ist fehlerfrei, sicher und funktioniert mit jeder halbwegs aktuellen PHP-Version.
Gruß, Wolfgang
na ja, Du hast eine Lösung gefunden, die Fehlermeldungen zu beseitigen, sinnvoller ist es, die Fehler zu beseitigen.
Code: Select all
if (isset($_REQUEST['variable'])) { $variable=$_REQUEST['variable']; } else { $variable=''; }
Ist fehlerfrei, sicher und funktioniert mit jeder halbwegs aktuellen PHP-Version.
Gruß, Wolfgang
Re: unbekannte Variable action?????!!!!!
Zu den Sicherheits Risiken:
Das ding wird nirgends Im Internet zu finden sein,
bloss für mein Bruder, der mit mir im Netzwerk hängt ein "away-
message-board".. Glaube kaum dass er sich die Mühe machen wird,
die Sicherheitslücken zu knacken, wenn er doch nur 20 M laufen
müsste, um zugriff auf meinen Rechner zu haben *g*...
Zu der korrekten Lösung
Bin bloss n Hobby-phpler, und das da versteh ich net... :lol:
Würde aber gerne, wenn mich jemand was zu meinem Script fragt
antworten können, und net irgendwie sagen müssen: "Das ist halt so"
darum behalt ich meine Lösung! :!:
so long, dognose..
und noch mal Danke für euer Bemühen :!:
Das ding wird nirgends Im Internet zu finden sein,
bloss für mein Bruder, der mit mir im Netzwerk hängt ein "away-
message-board".. Glaube kaum dass er sich die Mühe machen wird,
die Sicherheitslücken zu knacken, wenn er doch nur 20 M laufen
müsste, um zugriff auf meinen Rechner zu haben *g*...
Zu der korrekten Lösung
Bin bloss n Hobby-phpler, und das da versteh ich net... :lol:
Würde aber gerne, wenn mich jemand was zu meinem Script fragt
antworten können, und net irgendwie sagen müssen: "Das ist halt so"
darum behalt ich meine Lösung! :!:
so long, dognose..
und noch mal Danke für euer Bemühen :!:
Re: unbekannte Variable action?????!!!!!
Hallo,
Trotzdem will ich's kurz :roll: erklären:
In alten PHP-Versionen (3 und die ersten 4er) wurden Formulardaten einfach dadurch übergeben, daß PHP zu jedem Formularwert automatisch eine Variable mit dem Formularwert erzeugt hat.
<input name='var' wert='zahl'>
ergab automatisch
$var=zahl;
Da jedes Input-Tag, ob vom Scriptprogrammierer vorgesehen oder nicht, eine Variable ergab, konnten Angreifer über zusätzliche Input-Tags beliebige Variablen im Script setzen und erzeugen, z.B.
<input name='zaehler' wert='144'>
setzte einfach $zaehler auf 144.
Wehe, der Programmierer hatte diesen Mißbrauch nicht einkaluliert.
Außerdem wurden nicht existente Variablen beim ersten Aufruf einfach auf Leerstring bzw Null gesetzt, man konnte also einfach vergessen, eine Variable zu setzen bevor man sie erstmals ausliest.
Beides wurde anfangs als tolles Feature von PHP angesehen, bis man merkte, daß es vor allem tolle Sicherheitslöcher sind.
Beides ist in aktuellen PHP-Versionen nicht mehr vorgesehen. Die Formularwerte müssen mit $_REQUEST['variable'] übernommen werden. Variablen, für die es keinen REQUEST gibt, lassen sich über das Formular nicht mehr setzen.
Und eine Variable muß einen Wert zugewiesen bekommen, bevor ihr Wert abgefragt werden kann.
Mit
für jede im Formular zulässige Variable kann man den Zustand alter PHP-Versionen wieder herstellen, ohne die Sicherheitslöcher zu haben.
Die Zeile funktioniert so:
Für den angegebenen Formularwert wird zunächst geprüft, ob er gesetzt ist. Wenn ja, wird eine Variable gleichen Namens erzeugt und der Wert zugewiesen. Wenn nein, wird ebenfalls eine Variable gleichen Namens erzeugt und sie bekommt den Wert Leerstring. Mit diesen Variablen kann das Script genau so arbeiten wie mit der alten unsicheren Lösung, bis auf die zusätzlichen Zeilen am Scriptanfang also keine Scriptänderung, trotzdem bleibt das Sicherheitsloch geschlossen.
Leider gibt es in den aktuellen PHP-Versionen die Möglichkeit, in der php.ini auf die alten unsicheren Regeln zurückzuschalten. Und leider gibt es etliche Webhoster, die das auf Kundenservern machen, um sich Reklamationen zu ersparen und den Support zu schonen.
Gruß, Wolfgang
ok, in diesem Zusamenhang akzeptiert.dognose wrote: Das ding wird nirgends Im Internet zu finden sein,
darum behalt ich meine Lösung!
Trotzdem will ich's kurz :roll: erklären:
In alten PHP-Versionen (3 und die ersten 4er) wurden Formulardaten einfach dadurch übergeben, daß PHP zu jedem Formularwert automatisch eine Variable mit dem Formularwert erzeugt hat.
<input name='var' wert='zahl'>
ergab automatisch
$var=zahl;
Da jedes Input-Tag, ob vom Scriptprogrammierer vorgesehen oder nicht, eine Variable ergab, konnten Angreifer über zusätzliche Input-Tags beliebige Variablen im Script setzen und erzeugen, z.B.
<input name='zaehler' wert='144'>
setzte einfach $zaehler auf 144.
Wehe, der Programmierer hatte diesen Mißbrauch nicht einkaluliert.
Außerdem wurden nicht existente Variablen beim ersten Aufruf einfach auf Leerstring bzw Null gesetzt, man konnte also einfach vergessen, eine Variable zu setzen bevor man sie erstmals ausliest.
Beides wurde anfangs als tolles Feature von PHP angesehen, bis man merkte, daß es vor allem tolle Sicherheitslöcher sind.
Beides ist in aktuellen PHP-Versionen nicht mehr vorgesehen. Die Formularwerte müssen mit $_REQUEST['variable'] übernommen werden. Variablen, für die es keinen REQUEST gibt, lassen sich über das Formular nicht mehr setzen.
Und eine Variable muß einen Wert zugewiesen bekommen, bevor ihr Wert abgefragt werden kann.
Mit
Code: Select all
if (isset($_REQUEST['variable'])) { $variable=$_REQUEST['variable']; } else { $variable=''; }
Die Zeile funktioniert so:
Für den angegebenen Formularwert wird zunächst geprüft, ob er gesetzt ist. Wenn ja, wird eine Variable gleichen Namens erzeugt und der Wert zugewiesen. Wenn nein, wird ebenfalls eine Variable gleichen Namens erzeugt und sie bekommt den Wert Leerstring. Mit diesen Variablen kann das Script genau so arbeiten wie mit der alten unsicheren Lösung, bis auf die zusätzlichen Zeilen am Scriptanfang also keine Scriptänderung, trotzdem bleibt das Sicherheitsloch geschlossen.
Leider gibt es in den aktuellen PHP-Versionen die Möglichkeit, in der php.ini auf die alten unsicheren Regeln zurückzuschalten. Und leider gibt es etliche Webhoster, die das auf Kundenservern machen, um sich Reklamationen zu ersparen und den Support zu schonen.
Gruß, Wolfgang

