Session wird nicht übergeben

Crunchip

Mitglied
Hallo,
Ich habe ein formular erstellt welches die eingabe des users auf der nächsten seite ausgeben soll doch leider bleibt die nächste seite komplett leer und mir wird nichts angezeigt. was habe ich da falsch gemacht?
Hier die erste seite wo das formular ist:
PHP:
<?php
session_start();
?>
<html>
<head>
<title>Unbenanntes Dokument</title>
</head>

<body>
  <form action="test.php" method="post">
    Firmen Name* <input type="text" name="firmen_name" /><br />
    <input type="submit" name="senden" value="Schritt 2">
    <?php 
	if(isset ($_POST['senden']))
	{
		$_SESSION['f1'] = $_POST['firmen_name'];
	}
	?>
	
  </form>
</body>
</html>

und hier die 2. Seite wo die Eingabe ausgegeben werden soll.
PHP:
<?php
session_start();
?>

<html>
<head>
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php
echo $_SESSION['f1'];
?>

</body>
</html>

Ich hoffe mir kann geholfen werden.
 
Zuletzt bearbeitet:
Im PHP Manual findet sich

Um Cookie-basierte Sessions zu verwenden muss session_start() aufgerufen werden, bevor irgend etwas an den Browser geschickt wird.

Das Problem dabei ist, wenn dein Code in UTF-8 geschrieben ist, dann liest PHP die BOM als ob es Code wäre, und weil da kein <?php davor steht schickt er ihn an den Browser als ob es HTML wäre.

Lösung:
Entweder in ANSI schreiben, oder UTF-8 ohne BOM.
 
Ok und das ganze dann bitte nochmal für Anfänger auf deutsch :)
Sry aber kann damit grad nicht so viel anfangen

PS: Ich hab den fehler gefunden die if Anweisung aus Scipt eins musste in Script 2 stehen. nun funktionierts.
Trotzdem danke für die hilfe.
 
Zuletzt bearbeitet:
Das ist so nicht richtig, denn was du jetzt machst funktioniert immer, auch ganz ohne session.
Ob $_SESSION superglobal ist oder nicht, macht keinen Unterschied, du kannst ihr an jeder beliebigen Stelle einen Wert zuweisen.
Probier es aus, lass session_start() ganz weg, und du bekommst das selbe Ergebnis.

Dein Problem ist, dass du isset() im PHP Teil vom ersten Script nicht abfragen kannst, denn $_POST['senden'] existiert nicht im ersten Script und selbst wenn isset() funktionieren würde, dann ist im ersten Script $_POST['firmen_name'] immer noch leer.
Sowas geht nur mit JavaScript, onSubmit im input TAG.

Versuchs mal so (vorausgesetzt du schreibst in ANSI):

Code:
<?php
session_start();
$_SESSION['f1'] = 1;
?>
<html>
<head>
<title>Unbenanntes Dokument</title>
</head>

<body>
  <form action="test.php" method="post">
    Firmen Name* <input type="text" name="firmen_name" /><br />
    <input type="submit" name="senden" value="Schritt 2">
  </form>
</body>
</html>

Code:
<?php
session_start();
?>

<html>
<head>
<title>Unbenanntes Dokument</title>
</head>

<body>
<?php
if($_SESSION['f1'] == 1)
  {
    echo $_POST['firmen_name'];
  }
?>

</body>
</html>
 
Zuletzt bearbeitet:
Eigentlich soll daraus später mal ein 3Seitiges Registrierungsformular werden. Ich wollte das ganz so nur testen.
Leider weiß ich nicht wie ich deinen Ansatz umbauen kann in das Formular
 
Wenns nur um Weitergabe von Daten von einem Script ans Nächste geht, brauchst du keine sessions, das geht viel einfacher.

Seite 1:

Code:
<html>
<head>
<title>Unbenanntes Dokument</title>
</head>
 
<body>
  <form action="test.php" method="post">
    Firmen Name* <input type="text" name="firmen_name" /><br />
    <input type="submit" name="senden" value="Schritt 2">
  </form>
</body>
</html>

Seite 2:

Code:
<html>
<head>
<title>Unbenanntes Dokument</title>
</head>
 
<body>
<?php
if(!isset($_POST['firmen_name']))
  {
    print <<<END
     Error ....
    </body>
    </html>
END;
exit;
  }

print <<<END
  <form action="naechstertest.php" method="post">
  <input type="hidden" name="firmen_name" value="$_POST['firmen_name']">
    Nächste Eingabe* <input type="text" name="naechste_eingabe" /><br />
    <input type="submit" name="senden" value="Schritt 3">
  </form>
</body>
</html>
END;
?>

usw.
 
Zuletzt bearbeitet:
Ich wollte dies jedoch nicht mit hidden feldern machen da dies ein sicherheitsrisiko bereitstellt und das wollte ich umgehen.
 
Dann mach es so:

Code:
<?php
session_start();
$_SESSION['f0'] = 1;
?>
<html>
<head>
<title>Unbenanntes Dokument</title>
</head>
 
<body>
  <form action="test.php" method="post">
    Firmen Name* <input type="text" name="firmen_name" /><br />
    <input type="submit" name="senden" value="Schritt 2">
  </form>
</body>
</html>

Code:
<?php
session_start();
?>
 
<html>
<head>
<title>Unbenanntes Dokument</title>
</head>
 
<body>
<?php
if($_SESSION['f0'] == 1)
  {
    echo "session ist gültig";
    $_SESSION['f1'] = $_POST['firmen_name'];
  }
else
  {
    echo "session ist ungültig";
  }
?>
 
</body>
</html>
 
Zuletzt bearbeitet:
Zurück