Problem mit Session und SID

aleks

Mitglied
Hallo Zusammen,
für ein Formular (das der Registrierung dient) habe ich mir überlegt die Daten mit einer Session zu sammeln. Die sollte auch eine Identifikationsnummer habe also eine PHPSESSID. Das mit den Datensammeln ist keine Problem nur mit SID komme ich nicht voran. Wie geht das? Kann mir da einer Helfen? Hier mein Code:
PHP:
<?php
session_start();
 $_SESSION['login']= $_POST['login'];
 $_SESSION['pass1']= $_POST['pass1'];
 $_SESSION['pass2']= $_POST['pass2'];
 $_SESSION['vorname']= $_POST['vorname'];
 $_SESSION['nachname']= $_POST['nachname'];
 $_SESSION['geschlecht']= $_POST['geschlecht'];
 $_SESSION['geschlecht2']= $_POST['geschlecht2'];
 $_SESSION['geburtsdatum']= $timestamp;
 $_SESSION['strasse']= $_POST['strasse'];

 $_SESSION['nummer']= $_POST['nummer'];
 $_SESSION['land']= $_POST['land'];
 $_SESSION['plz']= $_POST['plz'];

 
 print_r($_POST);
 print_r($_SESSION);
 setlocale(LC_ALL, 'DEU');
  $allesok = false; 
if(isset($_POST['ueberpruefung'])) 
  {  
    $allesok = true;
  
   include('./pruefung.php');
  check($allesok,$error,$error2);
}
 // Hier wird die IF-Bedingung von ganz oben geschlossen.
  

 // Hier wird geprft ob allesok einen Wert hat. (1) Ist dies der Fall, k�nen die Variablen $_POST['name'] und $_POST['email'] weiter verarbeitet werden.
  if($allesok){
     echo  '<meta http-equiv="refresh" content="0;URL=kalender.php>'; 
    

	

  
  }

  // Ist der Wert 1 nicht vorhanden, zeige das Formular.
  else
  {
 

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
<title>Dreispaltiges Layout mit Kopf- und Fußzeile</title>

<link rel="stylesheet" href='css/formular_box.css' type="text/css" type='text/opera;charset=utf-8'>
</head>
<body>

<h1>CSS-basierte Layouts</h1>

<form action="kalender2.php? <?=SID?> " method="post" >

...
</form>
Also wie mache ich das, daß er mir in der Adressleiste die 32 Bit Url daran hängt?
Würde mich über euure Hilfe freuen.
Gruß Aleks
 
PHP:
<?= xxx ?>
Diese Form solltest du dir möglichst abgewöhnen, sie ist einfach nicht mehr zeitgemäß und wird wahrscheinlich bald abgeschafft.

Das was du suchst ist wohl diese Funktion hier:
session_id()

Und der Gebrauch geht so:
PHP:
<a href="bla.php?SID=<?php echo session_id(); ?>">Link</a>
 
Super, war genau, das was ich gesucht habe - spitze. Danke.;-)
Ich hab da noch ein kleines Problem ich hab schon alles durch´geschaut und finde einfach nicht den Grund darum er es nicht ausgibt. Konret: bei der Überprüfung des Passwort wird der Feldertext bzw das Sternchen nicht ausgegeben. So um diesesn Quellcode handelt es sich:
PHP:
<?php
session_start();
 $_SESSION['login']= $_POST['login'];
 $_SESSION['pass1']= $_POST['pass1'];
 $_SESSION['pass2']= $_POST['pass2'];
 $_SESSION['vorname']= $_POST['vorname'];
 $_SESSION['nachname']= $_POST['nachname'];
 $_SESSION['geschlecht']= $_POST['geschlecht'];
 $_SESSION['geschlecht2']= $_POST['geschlecht2'];
 $_SESSION['geburtsdatum']= $timestamp;
 $_SESSION['strasse']= $_POST['strasse'];
 $_SESSION['nummer']= $_POST['nummer'];
 $_SESSION['land']= $_POST['land'];
 $_SESSION['plz']= $_POST['plz'];
 $_SESSION['ort']= $_POST['ort'];
 $_SESSION['email']= $_POST['email'];
 $_SESSION['gruppe'][0] = $_POST['gruppe'][0];
 $_SESSION['gruppe'][1] = $_POST['gruppe'][1];

 
 print_r($_POST);
 print_r($_SESSION);
 setlocale(LC_ALL, 'DEU');
  $allesok = false; 
if(isset($_POST['ueberpruefung'])) 
  {  
    $allesok = true;
  
   include('./pruefung.php');
  check($allesok,$error,$error2);
}
 // Hier wird die IF-Bedingung von ganz oben geschlossen.
  

 // Hier wird geprft ob allesok einen Wert hat. (1) Ist dies der Fall, k�nen die Variablen $_POST['name'] und $_POST['email'] weiter verarbeitet werden.
  if($allesok){
     echo  '<meta http-equiv="refresh" content="10;URL=kalender.php>'; 
    

	

  
  }

  // Ist der Wert 1 nicht vorhanden, zeige das Formular.
  else
  {
 

?>
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1"/>
<title>Dreispaltiges Layout mit Kopf- und Fußzeile</title>

<link rel="stylesheet" href='css/formular_box.css' type="text/css" type='text/opera;charset=utf-8'>
</head>
<body>

<h1>CSS-basierte Layouts</h1>

<form action="kalender2.php?SID=<?php echo session_id(); ?> " method="post" >

<div class="raised"><b class="b1"></b><b class="b2"></b><b class="b3"></b><b class="b4"></b>
<div class="boxcontent">
<div class="inhalt">

<p>
<h4>Bitte alle Felder ausf&uuml;hlen!</h4></p>
<p><?php 
          echo $error['login'];
          echo $error['pass1'];
		  echo $error['pass2'];
		  echo $error['vorname'];
		  echo $error['nachname'];
		  echo $error['geburtstag'];
		  echo $error['strasse'];
		  echo $error['nummer'];
		  echo $error['land'];
		  echo $error['plz'];
		  echo $error['ort'];
		  echo $error['email'];
		  echo $error['gruppe'][0];
		  echo $error['gruppe'][1];

?>

</p>
<p></p>
<p > <label for="login">Login</label><?php echo $error2['login'];?><input type="text" name="login" value="<?php echo $_POST['login'];?>" /></p>
<p><label for="pass1">Passwort</label><?php echo $error2['pass1'];?><input type="password" name="pass1" value="<?php echo $_POST['pass1'];?>" /></p>
<p><label for="pass2">Passwort bestätigen</label><?php echo $error2['pass2'];?><input type="password" name="pass2" value="<?php echo $_POST['pass2'];?>" /></p>
...
<p>
  <input type="hidden" name="ueberpruefung" value="1">
  <input type="submit" name="Anmeldung" value="Weiter" id="button"></p>
</form>

<p class="fusszeile">Diese Fußzeile stellt über die CSS-Eigenschaft 'clear'
   den Elementenfluss wieder her.</p>
<?php
}

?>
So jetzt der wichtige Teil aus der Datei pruefung.php bzw der funktion check1 die oben eingebunden wird:
PHP:
<?php

function check(&$allesok,&$error,&$error2)
{
  if(empty($_POST['login']))
 {
   
   $allesok = 0;
   $error[login]="Bitte Login eingeben"." <br>";
   $error2[login] = "<b><span style=\"color:red;\">*</span></b>";
 }
 if(empty($_POST['pass1'])&&($_POST['pass2']))
 {
   $allesok = 0; 
   
   $error[pass1]="Bitte Password eingeben"."<br>";
   $error[pass2]="Bitte Password noch mal eingeben"." <br>";
   $error2[pass1] = "<b><span style=\"color:red;\">*</span></b>";
   $error2[pass2] = "<b><span style=\"color:red;\">*</span></b>";
 }
 else
 {
   

    
    if(($_POST['pass1'])!=($_POST['pass2']))
    {
	  $allesok = 0;
	  $error[pass1]="Bitte Password eingeben!<br>";
          $error[pass2]="Bitte Password noch mal eingeben!<br>";
   	  $error2[pass1] = "<b><span style=\"color:red;\">*</span></b>";
          $error2[pass2] = "<b><span style=\"color:red;\">*</span></b>";
     
	}
	
  }
So wie gesagt bei allen anderen Elementen des Formulars wird der Fehlertext ausgeben nur beim Passwort nicht, warum? Kann mir jemand Helfen?
Gruß aleks
 
Tschuldigung habe den Fehler gefunden!
PHP:
if(empty($_POST['pass1'])&& empty($_POST['pass2']))
das war's.

Gruß aleks
 
Hi, nur zu allgemeiner Sicherheit, benutze doch bitte md5 ;)

PHP:
$_SESSION['pass'] = md5($pass);


....und, ich würde nicht pass1 und pass2 in die Sessions schreiben.
Vergleich lieber pass1 und pass2 nach dem input und wenn sie gleich sind schreib nur PASS in die session ;)
 
Zurück