PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Superglobale Variablen


Michael Ring
16.10.2009, 18:48:40
Hallo!

Ich habe ein Problem mit der Auswertung von Formulardaten. Ich möchte Daten per "get" übergeben doch funktioniert es leider nicht. Die zu übergebenden Daten werden zwar in der URL angezeigt (also wird ja auch was übergeben), aber ich kann per $_get[""] nicht auf die Daten zugreifen, da das Array nicht gesetzt wird.
Kann es sein dass ein Konfigurationsproblem vorliegt...vieleicht superglobale Variablen ausgeschaltet, oder sowas in der Art??

BITTE um eure Hilfe!

cortex
16.10.2009, 19:32:29
willkommen im forum,

hast du schon mal $_GET[ '' ] bzw. $_GET[ "" ] ausprobiert ?

(beachte gross-schreibweise)

cx

Michael Ring
17.10.2009, 20:49:52
Danke für deine Antwort!!

Ja das hab ich schon ausprobiert...hat aber leider nich geklappt.Fällt dir vieleicht noch was anderes ein??

Hab's heut mal mit folgender Variante probiert :

In der php.ini den Wert register_globals = on gesetzt...leider ohne Erfolg!!

vt1816
17.10.2009, 20:57:58
Wie sieht es mit ein wenig Code aus (Formular und dessen Verarbeitung)?

Michael Ring
17.10.2009, 21:03:55
Ich stell jetzt einfach mal den Programm-Code rein...vieleicht fällt jemanden ja ein Fehler auf. Das ist echt zum verzweifeln.

<html>

<head>
<title></title>
</head>

<body>

<form name="eingabeformular" action="<?php echo htmlspecialchars($_SERVER['PHP SELF']); ?>" method="GET">
<table align="center">
<tr><td><b>Bitte geben sie ihre Daten ein!</b></td></tr>
<tr><td>Vorname:</td><td><input name="Vorname" type="text" value=""></td></tr>
<tr><td>Nachname:</td><td><input name="Nachame" type="text" value=""></td></tr>
<tr><td>Telefon:</td><td><input name="Telefon" type="text" value=""></td></tr>
<tr><td>E-Mail:</td><td><input name="Email" type="text" value=""></td></tr>
<tr><td><input type="submit" value="Daten speichern"></td></tr>
<table>
</form>

<?php
/*if (isset($_GET['submit'])){
echo "übertragen";
}else{
echo "nicht übertragen";*/
}
$vorname=$_GET["Vorname"]; //habs auch mit '' und post versucht!!
echo $vorname;
?>

</body>

</html>

Der Vorname wird schon nicht ausgegeben...darum brauch ich gar nich weitermachen!!

DokuLeseHemmung
17.10.2009, 21:33:45
<html>

<head>
<title></title>
</head>

<body>

<form name="eingabeformular" action="" method="get">
<table align="center">
<tr><td><b>Bitte geben sie ihre Daten ein!</b></td></tr>
<tr><td>Vorname:</td><td><input name="Vorname" type="text" value=""></td></tr>
<tr><td>Nachname:</td><td><input name="Nachame" type="text" value=""></td></tr>
<tr><td>Telefon:</td><td><input name="Telefon" type="text" value=""></td></tr>
<tr><td>E-Mail:</td><td><input name="Email" type="text" value=""></td></tr>
<tr><td><input type="submit" name="submit" value="Daten speichern"></td></tr>
<table>
</form>

<?php phpinfo(); ?>
<hr>
<?php print_r($_GET); ?>

</body>

</html>
register_globals hat damit nichts zu tun! Solltest du auf Off lassen.
PHP_SELF könnte XSS Attacken ermöglichen
phpinfo() zeigt dir deine Einstellungen
Dein Submitknopf hatte keinen namen
Dein Kommentar verursacht einen Syntaxerror

vt1816
17.10.2009, 21:42:38
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', TRUE);
?>
<html>

<head>
<title></title>
</head>

<body>

<form name="eingabeformular" action="" method="get">
<table align="center">
<tr><td><b>Bitte geben sie ihre Daten ein!</b></td></tr>
<tr><td>Vorname:</td><td><input name="Vorname" type="text" value=""></td></tr>
<tr><td>Nachname:</td><td><input name="Nachame" type="text" value=""></td></tr>
<tr><td>Telefon:</td><td><input name="Telefon" type="text" value=""></td></tr>
<tr><td>E-Mail:</td><td><input name="Email" type="text" value=""></td></tr>
<tr><td><input type="submit" name="submit" value="Daten speichern"></td></tr>
<table>
</form>

<?php phpinfo(); ?>
<hr>
<?php print_r($_GET); ?>

</body>

</html>

Michael Ring
17.10.2009, 22:01:58
Hab's jetzt mal mit deinem Code probiert.

Ergebnis der print_r($_GET); Funktion ist Array().

Welche Stelle der Konfiguration ist denn interesant für mein Anliegen.

vt1816
17.10.2009, 22:04:31
Erweitere mal noch wie folgt:

<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', TRUE);
?>
<html>

<head>
<title></title>
</head>

<body>

<form name="eingabeformular" action="" method="get">
<table align="center">
<tr><td><b>Bitte geben sie ihre Daten ein!</b></td></tr>
<tr><td>Vorname:</td><td><input name="Vorname" type="text" value=""></td></tr>
<tr><td>Nachname:</td><td><input name="Nachame" type="text" value=""></td></tr>
<tr><td>Telefon:</td><td><input name="Telefon" type="text" value=""></td></tr>
<tr><td>E-Mail:</td><td><input name="Email" type="text" value=""></td></tr>
<tr><td><input type="submit" name="submit" value="Daten speichern"></td></tr>
<table>
</form>

<?php phpinfo(); ?>
<hr>
<?php print_r($_GET);
var_dump($_GET) ?>

</body>

</html>

Was erhältst Du?

knight1
17.10.2009, 22:06:28
Hab's jetzt mal mit deinem Code probiert.

Ergebnis der print_r($_GET); Funktion ist Array().

Welche Stelle der Konfiguration ist denn interesant für mein Anliegen.

Gar keine momentan.

Wie DokuLeseHemmung schon bemerkt hat gibt es kein Formularelement mit dem Namen "submit".

Ändere mal das
<tr><td><input type="submit" value="Daten speichern"></td></tr>

in das
<tr><td><input type="submit" name="submit" value="Daten speichern"></td></tr>

Kai aka Knight1

DokuLeseHemmung
17.10.2009, 22:11:46
Hab's jetzt mal mit deinem Code probiert.

Ergebnis der print_r($_GET); Funktion ist Array().

Und das Formular hast du auch abgesendet?


Welche Stelle der Konfiguration ist denn interesant für mein Anliegen.
Da gibts verschiedenste......
Das fängt mit der PHP Version an und hört mit den Server Variablen nicht auf.

Michael Ring
17.10.2009, 22:19:27
Also das Ergebnis von var_dump($_GET); ist : array(0){}

Hab dem Submit-Button auch einen Namen gegeben...es geht aber trotzdem nicht!

Und ja...ich hab das Formular abgeschickt!

vt1816
17.10.2009, 22:21:37
...es geht aber trotzdem nicht!

Wo kann man sich das mal Online ansehen? Gibt es auch noch eine Antwort auf PHP-Version etc.?

Michael Ring
17.10.2009, 22:30:45
Also die PHP-Version ist 5.3.0...oder möchtest du das komplette Ergebnis von phpinfo() haben?Das ist halt recht bescheiden formatiert!

Online wird schwierig...soweit bin ich noch nich!

Mein Ziel ist eigentlich ne Anwendung für mich zuhaus...so ne Art Kontaktliste mit Datenbankanbindung.

vt1816
17.10.2009, 22:32:23
Also die PHP-Version ist 5.3.0...oder möchtest du das komplette Ergebnis von phpinfo() haben?
Ja, komplett aus dem og. Code!

Michael Ring
17.10.2009, 22:41:06
Ach Gott...ich schäme mich ja fast dir das jetzt so hinzuklatschen, aber ich weiß halt nich wie ich's besser formatieren soll!!Also Sorry :-)

phpinfo() PHP Version => 5.3.0 System => Windows NT ELISA-8808B27FC 5.1 build 2600 (Windows XP Professional Service Pack 3) i586 Build Date => Jul 2 2009 21:02:53 Compiler => MSVC6 (Visual C++ 6.0) Architecture => x86 Configure Command => cscript /nologo configure.js Server API => Command Line Interface Virtual Directory Support => enabled Configuration File (php.ini) Path => Loaded Configuration File => C:\xampp\php\php.ini Scan this dir for additional .ini files => (none) Additional .ini files parsed => (none) PHP API => 20090626 PHP Extension => 20090626 Zend Extension => 220090626 Zend Extension Build => API220090626,TS,VC6 PHP Extension Build => API20090626,TS,VC6 Debug Build => no Thread Safety => enabled Zend Memory Manager => enabled Zend Multibyte Support => disabled IPv6 Support => enabled Registered PHP Streams => https, ftps, php, file, glob, data, http, ftp, compress.zlib, compress.bzip2, phar, zip Registered Stream Socket Transports => tcp, udp, ssl, sslv3, sslv2, tls Registered Stream Filters => convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*, bzip2.* This program makes use of the Zend Scripting Language Engine: Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

Michael Ring
17.10.2009, 22:46:14
da fehlt noch ziemlich viel...aber ich muss erstmal schauen wie ich das ins Textfeld bekomme. Ich überschreite die max. Zeichenanzahl. Oder hast du die Infos die du brauchst?

vt1816
17.10.2009, 22:46:50
Kein Problem - wir reden aber ein wenig aneinander vorbei.

Nimm bitte den letzten Code aus dem vorhergehenden Posting, packe ihn in eine neue leere Datei, speichere die Datei und rufe sie anschließend auf. Fülle das Formular aus und schicke es ab. Und die Ausgabe die Du dann erhältst (inkl. phpinfo()) postest Du hier.

Ok?

Michael Ring
17.10.2009, 22:47:46
Configuration bcmath BCMath support => enabled Directive => Local Value => Master Value bcmath.scale => 0 => 0 bz2 BZip2 Support => Enabled Stream Wrapper support => compress.bz2:// Stream Filter support => bzip2.decompress, bzip2.compress BZip2 Version => 1.0.5, 10-Dec-2007 calendar Calendar support => enabled com_dotnet COM support => enabled DCOM support => disabled .Net support => enabled Directive => Local Value => Master Value com.allow_dcom => 0 => 0 com.autoregister_casesensitive => 1 => 1 com.autoregister_typelib => 0 => 0 com.autoregister_verbose => 0 => 0 com.code_page => no value => no value com.typelib_file => no value => no value Core PHP Version => 5.3.0 Directive => Local Value => Master Value allow_call_time_pass_reference => On => On allow_url_fopen => On => On allow_url_include => Off => Off always_populate_raw_post_data => Off => Off arg_separator.input => & => & arg_separator.output => & => & asp_tags => Off => Off auto_append_file => no value => no value auto_globals_jit => On => On auto_prepend_file => no value => no value browscap => C:\xampp\php\extras\browscap.ini => C:\xampp\php\extras\browscap.ini default_charset => no value => no value default_mimetype => text/html => text/html define_syslog_variables => Off => Off disable_classes => no value => no value disable_functions => no value => no value display_errors => STDOUT => STDOUT display_startup_errors => On => On doc_root => no value => no value docref_ext => no value => no value docref_root => no value => no value enable_dl => On => On error_append_string => no value => no value error_log => no value => no value error_prepend_string => no value => no value error_reporting => 32767 => 22519 exit_on_timeout => Off => Off expose_php => On => On extension_dir => C:\xampp\php\ext => C:\xampp\php\ext file_uploads => On => On highlight.bg => #FFFFFF => #FFFFFF highlight.comment => #FF8000 => #FF8000 highlight.default => #0000BB => #0000BB highlight.html => #000000 => #000000 highlight.keyword => #007700 => #007700 highlight.string => #DD0000 => #DD0000 html_errors => Off => Off ignore_repeated_errors => Off => Off ignore_repeated_source => Off => Off ignore_user_abort => Off => Off implicit_flush => On => On include_path => .;C:\xampp\php\PEAR => .;C:\xampp\php\PEAR log_errors => Off => Off log_errors_max_len => 1024 => 1024 magic_quotes_gpc => Off => Off magic_quotes_runtime => Off => Off magic_quotes_sybase => Off => Off mail.add_x_header => Off => Off mail.force_extra_parameters => no value => no value mail.log => no value => no value max_execution_time => 0 => 0 max_input_nesting_level => 64 => 64 max_input_time => -1 => -1 memory_limit => 128M => 128M open_basedir => no value => no value output_buffering => 0 => 0 output_handler => no value => no value post_max_size => 128M => 128M precision => 14 => 14 realpath_cache_size => 16K => 16K realpath_cache_ttl => 120 => 120 register_argc_argv => On => On register_globals => Off => Off register_long_arrays => Off => Off report_memleaks => On => On report_zend_debug => Off => Off request_order => no value => no value safe_mode => Off => Off safe_mode_exec_dir => no value => no value safe_mode_gid => Off => Off safe_mode_include_dir => no value => no value sendmail_from => postmaster@localhost => postmaster@localhost sendmail_path => no value => no value serialize_precision => 100 => 100 short_open_tag => Off => Off SMTP => localhost => localhost smtp_port => 25 => 25 sql.safe_mode => Off => Off track_errors => Off => Off unserialize_callback_func => no value => no value upload_max_filesize => 128M => 128M upload_tmp_dir => C:\xampp\tmp => C:\xampp\tmp user_dir => no value => no value user_ini.cache_ttl => 300 => 300 user_ini.filename => .user.ini => .user.ini variables_order => GPCS => GPCS xmlrpc_error_number => 0 => 0 xmlrpc_errors => Off => Off y2k_compliance => On => On zend.enable_gc => On => On ctype ctype functions => enabled date date/time support => enabled "Olson" Timezone Database Version => 2009.10 Timezone Database => internal Default timezone => Europe/Paris Directive => Local Value => Master Value date.default_latitude => 31.7667 => 31.7667 date.default_longitude => 35.2333 => 35.2333 date.sunrise_zenith => 90.583333 => 90.583333 date.sunset_zenith => 90.583333 => 90.583333 date.timezone => Europe/Paris => Europe/Paris dom DOM/XML => enabled DOM/XML API Version => 20031129 libxml Version => 2.7.3

Michael Ring
17.10.2009, 22:53:48
das is soo viel...ich glaub es wär besser das als Textdokument hochzuladen!

vt1816
17.10.2009, 22:58:47
das is soo viel...ich glaub es wär besser das als Textdokument hochzuladen!

Wer oder was hält Dich davon ab?

Michael Ring
17.10.2009, 23:00:05
ich muss ertsmal schauen wie das funktioniert!

Michael Ring
17.10.2009, 23:03:40
So...jetzt aber!

vt1816
17.10.2009, 23:15:38
Und das Formular hast Du ausgefüllt und abgeschickt - also die Datei zweimal aufgerufen?

Dann erweitern wir den Code nochmal:

<?php
error_reporting(E_ALL | E_STRICT);
ini_set('display_errors', TRUE);
?>
<html>

<head>
<title></title>
</head>

<body>

<form name="eingabeformular" action="" method="get">
<table align="center">
<tr><td><b>Bitte geben sie ihre Daten ein!</b></td></tr>
<tr><td>Vorname:</td><td><input name="Vorname" type="text" value=""></td></tr>
<tr><td>Nachname:</td><td><input name="Nachame" type="text" value=""></td></tr>
<tr><td>Telefon:</td><td><input name="Telefon" type="text" value=""></td></tr>
<tr><td>E-Mail:</td><td><input name="Email" type="text" value=""></td></tr>
<tr><td><input type="submit" name="submit" value="Daten speichern"></td></tr>
<table>
</form>

<?php phpinfo(); ?>
<hr>
<?php print_r($_GET);
var_dump($_GET) ?>

</body>

</html>
<?php
highlight_file($_SERVER['PHP_SELF']);
?>

Was erhältst Du jetzt? Das Ergebnis bitte noch mals als Dateianhang hier posten.

Michael Ring
17.10.2009, 23:20:39
Vielen Dank für deine Hilfe, aber ich muss jetzt leider Schluss machen. Ich poste das Ergebnis morgen früh. Vieleicht kannst du es dir dann mal anschauen!

Schönen abend noch

Michael Ring
18.10.2009, 10:36:36
So hier kommt das Erebnis deines letzten Codes.

Ich hab nur hinter var_dump($_GET) ein ; gesetzt!

feuervogel
18.10.2009, 10:39:33
So hier kommt das Erebnis deines letzten Codes.

Ich hab nur hinter var_dump($_GET) ein ; gesetzt!

war es nicht möglich das ganze mit dem browser als html zu speichern, so dass das halbwegs leserlich bleibt? außerdem sieht es mir nicht so aus, als ob das die gesamte ausgabe ist.

Michael Ring
18.10.2009, 10:44:30
Das ist eins zu eins das Ergebnis wie es im Browser angezeigt wird. Im Browser ist die formatierung auch nicht besser und nicht leserlicher!

DokuLeseHemmung
18.10.2009, 10:47:44
Ich sehe da einen Widerspruch:
Server API => Command Line Interface
Und
GATEWAY_INTERFACE => CGI/1.1


Zudem ist im Xampp das PHP normalerweise als Apache Modul konfiguriert.
Bei mir sieht der Anfang der PHPinfo Ausgabe dann so aus:
System Windows NT DICKERBRUMMER 5.1 build 2600 (Windows XP Home Edition Service Pack 3) i586
Build Date Jul 2 2009 21:02:53
Compiler MSVC6 (Visual C++ 6.0)
Architecture x86
Configure Command cscript /nologo configure.js
Server API Apache 2.0 Handler
Virtual Directory Support enabled
Configuration File (php.ini) Path no value
Loaded Configuration File C:\Programme\xampp\php\php.ini
Scan this dir for additional .ini files (none)
Additional .ini files parsed (none)
PHP API 20090626
PHP Extension 20090626
Zend Extension 220090626
Zend Extension Build API220090626,TS,VC6
PHP Extension Build API20090626,TS,VC6
Debug Build no
Thread Safety enabled
Zend Memory Manager enabled
Zend Multibyte Support disabled
IPv6 Support enabled
Registered PHP Streams https, ftps, php, file, glob, data, http, ftp, compress.zlib, compress.bzip2, phar, zip
Registered Stream Socket Transports tcp, udp, ssl, sslv3, sslv2, tls
Registered Stream Filters convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, zlib.*, bzip2.*

------------

Configuration
apache2handlerApache Version Apache/2.2.12 (Win32) DAV/2 mod_ssl/2.2.12 OpenSSL/0.9.8k mod_autoindex_color PHP/5.3.0 mod_perl/2.0.4 Perl/v5.10.0
Apache API Version 20051115
Server Administrator postmaster@localhost
Hostname:Port localhost:80
Max Requests Per Child: 0 - Keep Alive: on - Max Per Connection: 100
Timeouts Connection: 300 - Keep-Alive: 5
Virtual Server No
Server Root C:/Programme/xampp/apache



So:
Dein Installation sieht mir wie eine verbastelte Umgebung aus.
Kommt bei dir wirklich php-cgi.exe zum Einsatz?


Das ist eins zu eins das Ergebnis wie es im Browser angezeigt wird. Im Browser ist die formatierung auch nicht besser und nicht leserlicher!
Ein deutliches weiteres Zeichen dafür, das die falsche Server AP'I zum Einsatz kommt.
Das PHP läuft im cli Modus und nicht als CGI, darum merkt es auch nicht, dass es das HTTP abhandeln muß. Von daher auch keine Bereitstellung der GET Variablen.
Die strukturierte Ausgabe des phpinfo() findest du in der Quellcodeansicht des Browsers.

Michael Ring
18.10.2009, 10:53:18
Leider weiß ich nicht was du mit php-cgi.exe meinst. Ich hab eigetnlich nur das Xampp-Paket installiert.

Michael Ring
18.10.2009, 10:59:10
Super...ich kam grad auf eine Idee...ich hab in dun Run-Options meines Editors den Pfad von php.exe auf php-cgi.exe geändert und siehe da es funktioniert!!auch die phpinfo ist jetzt viel besser formatiert.

Vielen Vielen Dank nochmal für eure Hilfe und die Geduld.

--wird wohl nicht die letzte Frage gewesen sein--

DokuLeseHemmung
18.10.2009, 11:01:10
Leider weiß ich nicht was du mit php-cgi.exe meinst.
Herrjemine ..
Ich meine den PHP Interpreter, dem du deinen Quelltext in den Rachen wirfst.


Ich hab eigetnlich nur das Xampp-Paket installiert.
Nur?
Evtl. ist dabei gründlich was falsch gelaufen, oder du (oder irgendwer anders) hast da noch fleißig dran rum gebastelt.
Entweder schaffst du dir das nötige Wissen an, um die Installation zu reparieren, oder du installierst es nochmal.

DokuLeseHemmung
18.10.2009, 11:04:47
Super...ich kam grad auf eine Idee...ich hab in dun Run-Options meines Editors den Pfad von php.exe auf php-cgi.exe geändert und siehe da es funktioniert!!auch die phpinfo ist jetzt viel besser formatiert.

Vielen Vielen Dank nochmal für eure Hilfe und die Geduld.

--wird wohl nicht die letzte Frage gewesen sein--

Immer noch falsch!!
Der Aufruf über den Editor (warum hältst du das wichtigste überhaupt geheim?) ist nur 1 Seite der Medaille.


Teste deine Scripte über den Browser!!!!
Und nicht unbedingt aus dem Editor heraus. Dann hättest du das ganze Problem nicht gehabt.