PHP Probleme mit Session

Riker

Lieutenant
Registriert
Jan. 2005
Beiträge
862
Hallo!
Also ich habe folgendes vor:
Dort, wo ich sitze, stehen 4 Switche. Für diese habe ich bereits ein Serverseitiges Netzwerkmonitoring eingeführt, welches Web basiert ist. Heißt, es macht Log dateien über den Netzwerktraffic und schreibt diese automatisch in ein html dokument, wo es dann visualisiert wird. Die genaue Funktion davon ist nun nicht so interessant, es geht nur dabei darum, dass es *.html dateien gibt, auf die ich mit dem Web tool, dass ich jetzt dafür entwickel zugreifen möchte.
Das soll nun so aussehen, dass sich die personen über ein erstes optionsfeld den switch aussuchen können, welchen sie sehen möchten. Dann sollen weitere Optionsfelder erscheinen, auf denen die Ports durchnummeriert erscheinen und dann sollen sich die Personen den Port, welchen sie sich anschauen möchten auswählen können.
Das wollte ich mit Sessions lösen. Heisst, der Switchname soll in der Session abgespeichert werden und immer abgerufen werden können. Wenn jedoch der Switch ausgewählt wurde und man dann den Port auswählen möchte kommt man nicht zur gewünschten seite, sondern nachdem man dann den Port ausgewählt hat und dann auf ok klickt verschwindet die Portauswahl wieder und man findet sich bei der Switchauswahl wieder.
Kann mir da jemand einen Lösungsweg vorschlagen?
Hier der code:
Vielen Dank im Voraus!

PHP:
<?php
  session_start();   
  echo session_id();
  //ini_set("display_errors", "On");
  //error_reporting(4095);
  ?>
HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<title>Netzwerkmonitoring</title>
<body>

<form id="switch" method="post" action="">
  <p></p>
  <table width="200">
    <tr>
     <label> <td>
        Raum_143 </td><td><input type="radio" name="Switchwahl" value="143" id="Switchwahl_0" />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Fruehstueck </td><td><input type="radio" name="Switchwahl" value="frueh" id="Switchwahl_1" />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Serverraum 1 </td><td><input type="radio" name="Switchwahl" value="srv1" id="Switchwahl_2" />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Serverraum 2 </td><td><input type="radio" name="Switchwahl" value="srv2" id="Switchwahl_3" />
        </td></label>
    </tr>
  </table>
  <p></p>
  <input type="submit" value="Ok" />
</form>
PHP:
<?php   
 
 $switch = $_POST['Switchwahl'];
 
 $_SESSION['SeSwitch'] = $switch;
                                                  
 if (isset ($_SESSION['SeSwitch']))
 {
 print "<form id='port' method='post' action=''>
  <p></p>
  <table width='200'>
    <tr>
     <label> <td>
        Port 1 </td><td><input type='radio' name='Portwahl' value='1' id='Portwahl_0' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 2 </td><td><input type='radio' name='Portwahl' value='2' id='Portwahl_1' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 3 </td><td><input type='radio' name='Portwahl' value='3' id='Portwahl_2' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 4 </td><td><input type='radio' name='Portwahl' value='4' id='Portwahl_3' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 5 </td><td><input type='radio' name='Portwahl' value='5' id='Portwahl_4' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 6 </td><td><input type='radio' name='Portwahl' value='6' id='Portwahl_5' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 7 </td><td><input type='radio' name='Portwahl' value='7' id='Portwahl_6' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 8 </td><td><input type='radio' name='Portwahl' value='8' id='Portwahl_7' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 9 </td><td><input type='radio' name='Portwahl' value='9' id='Portwahl_8' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 10 </td><td><input type='radio' name='Portwahl' value='10' id='Portwahl_9' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 11 </td><td><input type='radio' name='Portwahl' value='11' id='Portwahl_10' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 12 </td><td><input type='radio' name='Portwahl' value='12' id='Portwahl_11' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 13 </td><td><input type='radio' name='Portwahl' value='13' id='Portwahl_12' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 14 </td><td><input type='radio' name='Portwahl' value='14' id='Portwahl_13' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 15 </td><td><input type='radio' name='Portwahl' value='15' id='Portwahl_14' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 16 </td><td><input type='radio' name='Portwahl' value='16' id='Portwahl_15' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 17 </td><td><input type='radio' name='Portwahl' value='17' id='Portwahl_16' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 18 </td><td><input type='radio' name='Portwahl' value='18' id='Portwahl_17' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 19 </td><td><input type='radio' name='Portwahl' value='19' id='Portwahl_18' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 20 </td><td><input type='radio' name='Portwahl' value='20' id='Portwahl_19' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 21 </td><td><input type='radio' name='Portwahl' value='21' id='Portwahl_20' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 22 </td><td><input type='radio' name='Portwahl' value='22' id='Portwahl_21' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 23 </td><td><input type='radio' name='Portwahl' value='23' id='Portwahl_22' />
        </td></label>
    </tr>
    <tr>
      <label><td>
        Port 24 </td><td><input type='radio' name='Portwahl' value='24' id='Portwahl_23' />
        </td></label>
    </tr>
  </table>
  <p></p>
  <input type='submit' value='Ok' />
</form>";   
   
 } 
     


 $port=$_POST['Portwahl'];
     print "port:" . $port;


  if ($_SESSION['SeSwitch'] == '143' && isset ($port))
  {              
    
      print_r ($_SESSION['SeSwitch']); 
   $filename = "./172.27.172.195_$port.html";  
   if (file_exists($filename))
   {
   header ("Location: ./172.27.172.195_$port.html");
   }
   else
   {
    print "Dieser Port ($port) ist nicht belegt. Bitte einen anderen wählen!";
   }
  }
 
  if (isset ($port) && $_SESSION['SeSwitch'] == "frueh")
  {            
   $filename = "./172.27.172.196_$port.html"; 
   if (file_exists($filename))
   {
   header ("Location: ./172.27.172.196_$port.html");
   }
   else
   {
    print "Dieser Port ($port) ist nicht belegt. Bitte einen anderen wählen!";
   }
  }     
          
?>

</body>
</html>
 
Zuletzt bearbeitet:
AW: Probleme mit Session (PHP)

Hallo,

Also ich kann deiner Ausführung nicht folgen, warum du das mit Session-Variablen lösen willst.
Du kannst die Auswahl des Switch per Post-Var abfangen und dann als Hidden-Input in die Portauswahl integrieren. Somit hast du anschließend beide Werte zur Verfügung.

Bei deiner Lösung stelle ich mir vor, dass sowohl die Switchauswahl, als auch die Portauswahl auftaucht, da du nicht unter beiden unterscheidest, sondern die Portwahl nach der Switchauswahl einfach darstellst.
Dann würde ich prüfen, ob die SessionVariable geschrieben wurden, indem du sie einfach ausgibst.
Die Abfrage welcher Port ausgewählt wurde, sollte auch nur dann geschehen, wenn das Submit der Form stattgefunden hat. Somit unterscheidest du sicherer zwischen den Aktionen.
 
AW: Probleme mit Session (PHP)

sieht so aus als ob du die $_SESSION['SeSwitch'] immer überschreiben würdest ...
 
@LeonMc
oooh... danke... jetzt hab ichs auch bemerkt, dass ich es immer überschreibe! Hab die globale variable $_SESSION jetzt ins erste if gedöns reingeschoben, jetzt wirds nich mehr überschrieben und alles funzt! Vielen vielen vielen vielen dank!
@custus
ich kann meinen ausführungen manchmal selbst nicht ganz folgen :)
bin aber auch recht neu in php... lerne es jetzt erst seit 2, 3 tagen... und das iss das 2te programm dass ich mit php erstma schreibe. wollte es mit session lösen, weil ich kein anderen lösungsweg gefunden habe.
aber auch danke dir, für deine mühe, mir weiterhelfen zu wollen!
 
noch ein kleiner tip:
PHP:
header ("Location: ./172.27.172.196_$port.html");
wird bei dir eine fehlermeldung bringen, denn eine header-anweisung muss kommen bevor sonst irgendwas ausgegeben wird bzw an den browser geschickt wird.
 
Zurück
Oben