$_POST-variablen werden nicht richtig übergeebn

Ausgeschlossen, daß z.B. eine SQL Injection drin ist. Mehr Infos findest Du sicher über Google.
 
aaaaaa. Jetzt kapiert. schon klar. Aber ich meine, ich zeig dir mal den Code

PHP:
<?php
session_start();
echo $_POST['Name'] . "<br>";
$_POST['Name'] = $_SESSION['Name'];
echo $_SESSION['Name'];

Der Output wenn name="Test"

test

Notice: Undefined index: Name in /Applications/MAMP/htdocs/komplette ueberarbeitung/select.php on line 4

Notice: Undefined index: Name in /Applications/MAMP/htdocs/komplette ueberarbeitung/select.php on line 5


Ich versteh das nicht :(
 
Hast du der Seite denn über POST etwas geschickt?

Denn wenn nicht, ist der Index 'Name' in dem Array natürlich leer. Und genau das meckert PHP an.

Am Besten mit einem isset() vorher prüfen, ob die Variable überhaupt gesetzt ist.

PHP:
<?php 
session_start(); 
if( isset( $_POST['Name'] ) ) {
	echo $_POST['Name'] . "<br>"; 
	$_POST['Name'] = $_SESSION['Name']; 
	echo $_SESSION['Name'];
}


Edit: Merke gerade, das Problem liegt eher in der Session.

Wie willst du denn $_POST['Name'] einen Wert aus der Session zuweisen, der nie gesetzt wurde?
 
$_POST['Name'] = $_SESSION['Name'] nochmal genau lesen. Vielleicht doch andersherum? ;)
 
jaja wenn ich
echo $_POST['Name'];
mache kommt ja Test raus. das was ich eingegeben habe.
 
Du hast da was vertauscht.

Sorry für meine falsche Analyse ;)

PHP:
<?php 
session_start(); 
if( isset( $_POST['Name'] ) ) {
    echo $_POST['Name'] . "<br>"; 
    $_SESSION['Name'] = $_POST['Name']; 
    echo $_SESSION['Name'];
}
 
ok wenn ich den Ratschlag von getränkemarkt befolge, gibt es nur noch diese Fehlermeldung:
Notice: Undefined variable: POST in /Applications/MAMP/htdocs/komplette ueberarbeitung/select.php on line 4

line 4:
$_SESSION['Name'] = $POST['Name'];
 
Ein bisschen mitdenken musst du aber auch…

$POST != $_POST…
 
noch eine Frage!

kann ich statt

PHP:
$_SESSION['Zahlungsweise'] = $_POST['Zahlungsweise'];
$_SESSION['Name'] = $_POST['Name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['Masse'] = $_POST['Masse'];
$_SESSION['nummer'] = $_POST['nummer'];
$_SESSION['Strasse'] = $_POST['Strasse'];
$_SESSION['Hausnummer'] = $_POST['Hausnummer'];
$_SESSION['PLZ'] = $_POST['PLZ'];
$_SESSION['Ort'] = $_POST['Ort'];
$_SESSION['Bestellnummer'] = $_POST['Bestellnummer'];

einfach auch
PHP:
$_SESSION = $_POST;

machen?
 
Grundsätzlich schon.

Du musst dir aber darüber bewusst sein, dass dann eventuell nicht nur die 10 Werte darin stehen, sondern noch 47 andere. Du kannst eben nicht kontrollieren, was über POST reinkommt.

Außerdem wirft die Seite einen Fehler, sobald einer der 10 Werte im POST-Array ungesetzt ist.
 
ich mach einfach ein @ davor. dann gibs keinen Fehler.

Und andere Felder hab ich ja nicht, und wenn man es manipuliert, bringe auch nicht, weil Ichs dann am end auf die umständliche Art mache. dann fliegen die andern werte raus :)
 
ich mach einfach ein @ davor. dann gibs keinen Fehler.

Es gibt weiterhin Fehler, sie werden nur unterdrückt.

Das ist sehr schlechte Programmierpraxis und macht die Anwendung langsamer. (Natürlich ist das bei 10 @s nicht merklich, aber ein @ kostet mehr Zeit als ein entsprechendes isset() davor, um den Fehler komplett zu verhindern)
 
Die Zeile
PHP:
$_SESSION = $_POST
brauchst du nicht unterdrücken. Soweit ich weiß ist $_POST immer gesetzt, auch wenn nichts übermittelt wurde.

Aber immer, wenn du im folgenden auf eine Element im $_SESSION-Array zugreifen möchtest, musst einen möglichen Fehler unterdrücken, weil du nicht sicher sein kannst, dass es gesetzt ist.

Aber wie gesagt, @ macht man nicht.

Es gibt einige Ausnahmen, bei denen es keine Alternativen gibt, aber der Variablen-/Array-Zugriff gehört nicht dazu.
 
machen kann man vieles, man kann auch ohne Fallschirm aus einem Flugzeug springen. Nur ist eben nicht alles schlau! Blind alle POSt-Variablen ungeprüft in eine Session zu übernehmen ist ganz sicher nicht schlau!

Wenn man das macht, dann kann man diesen "Optimierungsweg" noch zu Ende gehen und die Session wegsparen und alles im POST-Stream belassen - irgendwie sind wir dann aber wieder am Anfang des Threads.
 
richtig. dann haben wir wieder den Punkt, dass POST ein mit hidden Inputs einsicherhaits Risiko ist.
 
ok ich hab nachgedacht (nee hab ich nicht) und hab ausprobiert.

ich muss die Zuweisung (SESSION = POST) mit isset überprüfen, da sonst beim 2. reload. die SESSION mit leeren POST werten überschrieben werden. und da SESSIOn immer da ist (ich Kahns nicht mit isset überprüfen) muss ich es jetzt doch alle Einzel über prüfen.


PHP:
if (!isset($_SESSION['Zahlungsweise'])){
$_SESSION['Zahlungsweise'] = $_POST['Zahlungsweise'];
}
if (!isset($_SESSION['Name'])){
$_SESSION['Name'] = $_POST['Name'];
}
if (!isset($_SESSION['email'])){
$_SESSION['email'] = $_POST['email'];
}

oder nicht :rolleyes:?
 
Das ganze ginge (mit allen zuvor genannten Bedenken und möglichen Problemen) auch einfacher:

PHP:
$_SESSION = array_merge( $_POST, $_SESSION );
 
Zurück
Oben Unten