php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 24-09-2004, 18:59
kill@motte
 Junior Member
Links : Onlinestatus : kill@motte ist offline
Registriert seit: Jun 2002
Beiträge: 67
kill@motte ist zur Zeit noch ein unbeschriebenes Blatt
Standard Problem mit Formular und PHP

Hi

Ich habe ein Problem mit einem Formular und PHP.
Wenn ich ein Hidden Feld mit dem Namen "action" und dem Wert "add" habe, wird dieses Feld seltsamerweise nicht mit übergeben. Das Formular ist dann immernoch zu sehen und nicht wie es sein sollte nur "test".

Hier mal den Quelltext des Scriptes (test.php).
PHP-Code:
<?php
if ($HTTP_POST_VARS[action] != "add")
{
?>
<form method="post" action="" enctype="multipart/form-data">
<input type="hidden" name="action" value="add">

<textarea name="about" cols="80" rows="20"></textarea>
<input type="file" name="bild">

<input type="submit" name="Submit" value="anlegen">
</form>
<?php 
}
if (
$HTTP_POST_VARS[action] == "add")
{
echo 
"test";
}
?>
Ich habe selber ein bischen rumprobiert und habe festgestellt, das es am enctype="multipart/form-data" im Formulartag liegt. Das Script funktioniert nur wenn ich dieses weglasse oder im Formulartag action="test.php?action=add" angebe, allerdings will ich ja eine Datei mit hochladen und die action verbergen.

PHP Version ist 4.1.2 (register_globals = on)

Kann es an der PHP Version liegen?
Weil bei mir auf dem Rechner Version 4.3.0 läuft und dort funktioniert das Script wunderbar.

Geändert von kill@motte (24-09-2004 um 19:29 Uhr)
Mit Zitat antworten
  #2 (permalink)  
Alt 24-09-2004, 20:24
Mike04
 Registrierter Benutzer
Links : Onlinestatus : Mike04 ist offline
Registriert seit: Jul 2004
Ort: Hannover
Beiträge: 46
Mike04 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo kill@motte,

bin zwar kein Mod und auch noch kein PHP-Oldie, vielleicht kann ich dir aber trozdem etwas helfen.

1. Möchtest du Bilder hochladen, darf meines Wissens enctype="multipart/form-data" nicht fehlen.

2. Bei action die URL angeben.

3. Mir sagt jetzt $HTTP_POST_VARS nichts.
Aber wenn Register-Globals on sind, stehen die Formular-Namen nach Übergabe als Variablen zur Verfügung. Du brauchst (oder darfst ???) also hier eigentlich nicht mit POST arbeiten.
Hast du die Globals auf off, probierst mal damit: if ($_POST['action'] != "add") { ... }

Hoffe, ich konnte dir helfen. Grüße, Mike.

Geändert von Mike04 (24-09-2004 um 20:27 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 24-09-2004, 20:37
NielsRunge
 Member
Links : Onlinestatus : NielsRunge ist offline
Registriert seit: Sep 2004
Ort: Gremmerup
Beiträge: 339
NielsRunge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

OffTopic:

Zitat:
Du brauchst (oder darfst ???) also hier eigentlich nicht mit POST arbeiten.
man sollte wenn möglich immer mit register_globals = OFF arbeiten bzw. immer $_(SESSION|GET|POST|COOKIE|SERVER)

__________________
[Test] MySQL cli Emulator
Mit Zitat antworten
  #4 (permalink)  
Alt 24-09-2004, 20:46
Floriam
 PHP Senior
Links : Onlinestatus : Floriam ist offline
Registriert seit: May 2003
Ort: Deutschland
Beiträge: 1.432
Floriam ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Beachte einfach Mikes Punkt Nr 2 und dein Problem sollte gelöst sein..

Und eine der grundlagen lautet: Schreibe dein Script immer so, dass es auch möglichst vielen verschiedenen Systemen läuft. Also arbeitet man mit $_POST oder in deinem fall mit $HTTP_POST_VARS (wieso eigentlich, arbeitest du mit PHP < 4.1.0 (da wurde $_POST anstatt $HTTP_POST_VARS eingeführt soweit ich weiß) oder wieso benutzt du die alte Schreibweise..
Mit Zitat antworten
  #5 (permalink)  
Alt 24-09-2004, 20:57
kill@motte
 Junior Member
Links : Onlinestatus : kill@motte ist offline
Registriert seit: Jun 2002
Beiträge: 67
kill@motte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich benutze die alte Schreibweise, damit das Script auch bei PHP Versionen < 4.1.0 noch läuft.

Wenn ich $_POST['action'] oder nur $action anstatt $HTTP_POST_VARS['action'] benutze funktioniert das Script auch nicht. Habe ich schon alles durchprobiert.

Nehme ich allerdings das enctype="multipart/form-data" aus dem Form Tag läuft das Script Nur genau das brauche ich ja.

So nochwas, bin ja dauernd am rumfummeln.

Läuft:
PHP-Code:
<?php
if ($HTTP_GET_VARS[action] != "add")
{
?>
<form method="post" action="test.php?action=add" enctype="multipart/form-data">

<textarea name="about" cols="80" rows="20"></textarea>
<input type="file" name="bild">

<input type="submit" name="Submit" value="anlegen">
</form>
<?php 
}
if (
$HTTP_GET_VARS[action] == "add")
{
echo 
"test";
}
?>
Läuft nicht

PHP-Code:
<?php
if ($HTTP_POST_VARS[action] != "add")
{
?>
<form method="post" action="test.php" enctype="multipart/form-data">
<input type="hidden" name="action" value="add">

<textarea name="about" cols="80" rows="20"></textarea>
<input type="file" name="bild">

<input type="submit" name="Submit" value="anlegen">
</form>
<?php 
}
if (
$HTTP_POST_VARS[action] == "add")
{
echo 
"test";
}
?>
Und jetzt wüsste ich gerne warum das 2. nicht läuft.

Geändert von kill@motte (24-09-2004 um 21:10 Uhr)
Mit Zitat antworten
  #6 (permalink)  
Alt 24-09-2004, 21:06
NielsRunge
 Member
Links : Onlinestatus : NielsRunge ist offline
Registriert seit: Sep 2004
Ort: Gremmerup
Beiträge: 339
NielsRunge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das erste dürfte auch nicht laufen da es "$HTTP_GET_VARS[action]" und nicht "$HTTP_POST_VARS[action]" ist.
__________________
[Test] MySQL cli Emulator
Mit Zitat antworten
  #7 (permalink)  
Alt 24-09-2004, 21:11
kill@motte
 Junior Member
Links : Onlinestatus : kill@motte ist offline
Registriert seit: Jun 2002
Beiträge: 67
kill@motte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Jo, total übersehen beim Kopieren und Einfügen. Ist korrigiert

Trotzdem besteht das Problem immernoch.
Mit Zitat antworten
  #8 (permalink)  
Alt 24-09-2004, 21:19
NielsRunge
 Member
Links : Onlinestatus : NielsRunge ist offline
Registriert seit: Sep 2004
Ort: Gremmerup
Beiträge: 339
NielsRunge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hier schon geschaut?

http://groups.google.com/groups?q=ph...-8&sa=N&tab=wg

und was gibt var_dump($_POST) ?
__________________
[Test] MySQL cli Emulator
Mit Zitat antworten
  #9 (permalink)  
Alt 24-09-2004, 21:36
Mike04
 Registrierter Benutzer
Links : Onlinestatus : Mike04 ist offline
Registriert seit: Jul 2004
Ort: Hannover
Beiträge: 46
Mike04 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@kill@motte

Nehme mal an, du willst letztendlich auch ein Bild hochladen. Dazu muss enctype="multipart/form-data" aber angegeben sein.


@Niels

Wenn ich deinen link-Hinweis richtig verstanden habe, dann ist es in PHP aus Sicherheitsgründen nur möglich, Bilder zusammen mit Daten bei register_globals = OFF zu übergeben und die Daten dann dementsprechend über $_POST['...'] anzusprechen?!?
Mit Zitat antworten
  #10 (permalink)  
Alt 24-09-2004, 21:39
Mike04
 Registrierter Benutzer
Links : Onlinestatus : Mike04 ist offline
Registriert seit: Jul 2004
Ort: Hannover
Beiträge: 46
Mike04 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@kill@motte

Habe dein Script Nr. 2 bei mir ausprobiert. PHP-Version 4.3.2 und Register-globals = off. Es funktioniert, nach absenden wird nur "Test" angezeigt. So soll es doch sein, oder?
Mit Zitat antworten
  #11 (permalink)  
Alt 24-09-2004, 21:43
kill@motte
 Junior Member
Links : Onlinestatus : kill@motte ist offline
Registriert seit: Jun 2002
Beiträge: 67
kill@motte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Mike04

Na klar funktioniert es. Nur eben nicht auf dem Webserver mit der PHP Version 4.1.2 Das ist ja das Problem.



So hab mal schön in den Newsgroups gewurschtelt, hat mir aber leider nicht so viel erbracht. Allerdings bin ich darauf gekommen eine PHP Version Info auf dem Webserver zu starten und siehe da.

--> file_uploads off

steht in der Konfiguration. Kein Wunder, das das Ganze nicht funktionieren kann. Wahrscheinlich blockiert der Server das Form Tag enctype="multipart/form-data" und zerstört mir alle Variablen. Naja muss ich mich mal an den Hoster wenden.

Geändert von kill@motte (24-09-2004 um 21:48 Uhr)
Mit Zitat antworten
  #12 (permalink)  
Alt 24-09-2004, 21:53
Mike04
 Registrierter Benutzer
Links : Onlinestatus : Mike04 ist offline
Registriert seit: Jul 2004
Ort: Hannover
Beiträge: 46
Mike04 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Das heisst aber nur, dass keine Bilder hochgeladen werden. Die Variablen aber eigentlich schon. Das diese "zerstört" werden, da wäre ich skeptisch.
Dann dürfte dein erstes Script, das mit

<form method="post" action="test.php?action=add" enctype="multipart/form-data">

ja auch nicht funktionieren.
Mit Zitat antworten
  #13 (permalink)  
Alt 24-09-2004, 22:18
kill@motte
 Junior Member
Links : Onlinestatus : kill@motte ist offline
Registriert seit: Jun 2002
Beiträge: 67
kill@motte ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So hab doch nochmal weitergeforscht und das Script ein wenig ausgebaut.

PHP-Code:
<?php
if ($HTTP_GET_VARS[action] != "add")
{
?>
<form method="post" action="test.php?action=add" enctype="multipart/form-data">
<input type="hidden" name="Text" value="Dies ist ein Test">

<textarea name="about" cols="80" rows="20"></textarea>
<input type="file" name="bild">

<input type="submit" name="Submit" value="anlegen">
</form>
<?php 
}
if (
$HTTP_GET_VARS[action] == "add")
{
echo 
$HTTP_POST_VARS['Text'];
echo 
$HTTP_POST_VARS['about'];
}
?>
Das Script funzt soweit auch nicht. Den der Text "Dies ist ein Test" müsste bei action == "add" angezeigt werden, genauso wenn ich eines der Textfelder aufülle. Allerdings wird gar nichts angezeigt und daraus schliesse ich das die Variablen nicht übergeben bzw. geblockt werden.

Bitte unterscheiden:

action="test.php?action=add" - Anweisung, die an den Browser gesendet wird. vgl. normaler Link

enctype="multipart/form-data" und die Variablen werden an den Server gesendet. Der Server block alle Variablen aus dem Formular weil file_uploads = off

Geändert von kill@motte (24-09-2004 um 22:28 Uhr)
Mit Zitat antworten
  #14 (permalink)  
Alt 24-09-2004, 22:20
NielsRunge
 Member
Links : Onlinestatus : NielsRunge ist offline
Registriert seit: Sep 2004
Ort: Gremmerup
Beiträge: 339
NielsRunge ist zur Zeit noch ein unbeschriebenes Blatt
Standard

es muß ja auch
PHP-Code:
echo $HTTP_POST_VARS['Text'];
echo 
$HTTP_POST_VARS['about']; 
sein...
__________________
[Test] MySQL cli Emulator
Mit Zitat antworten
  #15 (permalink)  
Alt 24-09-2004, 22:22
Mike04
 Registrierter Benutzer
Links : Onlinestatus : Mike04 ist offline
Registriert seit: Jul 2004
Ort: Hannover
Beiträge: 46
Mike04 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn du wissen willst, ob die Variablen übergeben werden, dann lass Sie dir doch mal mit echo anzeigen. Also, einfach zum Test mal eine generelle Anzeige vor der if-Anweisung.

Geändert von Mike04 (24-09-2004 um 22:25 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

HeidiSQL - kostenloses MySQL front-end Editor für Windows ansehen HeidiSQL - kostenloses MySQL front-end Editor für Windows

HeidiSQL - ist ein Windows-Editor für die bekannt open Source Datenbank mySQL

10.12.2018 Berni | Kategorie: MYSQL/ Management
piwik Open-Source Webanalyse-Software ansehen piwik Open-Source Webanalyse-Software

piwik ist eine gute Alternative zu Google Analytics. Viele Features und ein modernes Erscheinungsbild mit aussagefähigen Statistiken in Echtzeit

10.12.2018 phpler | Kategorie: PHP/ Besucherzaehler
jQuery Mobile ansehen jQuery Mobile

Touch-Optimized Web Framework für Smartphones & Tablets

09.12.2018 phpler | Kategorie: AJAX/ Framework
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 08:41 Uhr.