Sessions global of niet???

  • Onderwerp starter Onderwerp starter Yoki
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Yoki

Gebruiker
Lid geworden
8 dec 2003
Berichten
35
Ik probeer een login systeem te maken maar het lukt me niet helemaal.

Ik kan ervoor zorgen dat je op 1 pagina ingelogd bent maar als ja dan doorklikt naar de volgende pagina ben je niet meer ingelogd.

Ook herkent php de SESSION waarde niet meer in een andere pagina alleen maar in de zelfde pagina waarin ik deze waarde gedeclareerd heb.
Ik weet niet of dit normaal is of niet.

Wie kan mij helpen.

Index.php

PHP:
<!DOCTYPE HTML PUBLIC '-//W3C//DTD HTML 4.0 Transitional//EN'>

<?php 
session_start();
require ("Config.php");
?>

<html>
   <head>
      <title>
         <?php $_IndexTitel ?>
     </title>
  </head>
<body>
   
<table width="100%">
   <tr>
      <td align="center">
         <form name="Inlog" method="post" action="Process.php">
            Nickname: <input type='text' name='Nick'>
            Wachtwoord: <input type='text' name='Wachtwoord'>
            <input type='submit' value='Log in'>
         </form>
      </td>
</table>

</body>
</html>

Process.php

PHP:
<?php
   session_start();
   require ("config.php");
   $_Nickname = $_POST["Nick"];
   
   //connect to the server.
   mysql_connect ("$_Host", "$_Username", "$_Password");
   
   //Select the database.
   mysql_select_db("$_Database");
   
   //selct the data from the database.
   $_query = "SELECT * FROM users WHERE Nick LIKE '" . $_Nickname . "'";
   
   //Execute the query.
   $_resultaat = mysql_query($_query) or die ("Error");
   
   //Put data in a array
   while($_Data = mysql_fetch_object($_resultaat)){
      //Gegevens uit de tabel in een variabele stoppen.
      $_SESSION['ID']         = "$_Data->ID";
      $_SESSION['Anaam']      = "$_Data->Anaam";
      $_SESSION['Vnaam']      = "$_Data->Vnaam";
      $_SESSION['Email']      = "$_Data->Email";
      $_SESSION['Phone']      = "$_Data->Phone";
      $_SESSION['Nick']       = "$_Data->Nick";
      $_SESSION['Wachtwoord'] = "$_Data->Wachtwoord";
      $_SESSION['Status']     = "$_Data->Status";
      $_SESSION['Level']      = "$_Data->Level";
   
   //??   
   if (isset($_POST["Nick"]) && $_POST["Nick"] && isset($_POST["Wachtwoord"]) && $_POST["Wachtwoord"] != ""){
      //Controleren of De wachtwoorden overeenkomen.
      if($_POST["Wachtwoord"] == $_SESSION['Wachtwoord']){
         //Controleren of de account al actief is.
         if($_SESSION['Status'] == "ja"){;
            switch($_SESSION['Level']){
               case 1: 
                        echo "         Welkom <b>". $_SESSION['Vnaam'] . "</b> Op deze site. <br>\n";
                        echo "         U hebt een level 1 account -> User.<br>";
                        echo "         <a href='Log uit.php?Name=" . $_Nickname . "'>Log uit</a><br>";
                        break;
               case 2: 
                        echo "         Welkom <b>". $_SESSION['Vnaam'] . "</b> Op deze site. <br>\n";
                        echo "         U hebt een level 2 account -> Admin.<br>";
                        echo "         <a href='Log uit.php?Name=" . $_Nickname . "'>Log uit</a><br>";
                        break;
            }
         }else{
            echo "         Uw bent nog niet geactiveerd.";
         }
      }Else{
         echo "         Verkeerd wachtwoord, Probeer opnieuw!!\n";
      }
   }
   }
?>

De status heb ik erbij gezet zodat niet iemand zomaar kan inloggen maar dat ik hem eerst moet activeren en het level heb ik erbij gezet zodat ik kan zien wat type hij is een user of een moderator of een admin etc.
 
Laatst bewerkt:
als je de code eens in
PHP:
 tags zet :)

Je moet bovenaan elke pagina zetten waar je sessies wilt gebruiken [b]session_start();[/b] :)

Succes :thumb:
 
heb het eventjes aangepast
start session staat er toch boven.
 
Ok het is opgelost
Ik had start session 1 regel te laag staan het moet echt als eerste zin staan zelfs boven doctype etc.
 
Geplaatst door Yoki
Ik had start session 1 regel te laag staan het moet echt als eerste zin staan zelfs boven doctype etc.
't Moet idd boven alle output (zoals DOCTYPE :)).

Je script bevat btw nog allerlei schoonfoutjes :)
 
Geplaatst door Yoki
wat bedoel je met schoonheids foutjes?
Zie aantekeningen bij dit ietwat verbeterde stukje code :)
PHP:
<?php
   session_start();
   require ("config.php");
   $_Nickname = $_POST["Nick"];
  
   //connect to the server.
   @mysql_connect ($_Host,$_Username,$_Password) or die("Kon geen verbinding maken met de MySQL database server: " . mysql_error()); // Variabelen niet tussen "" zetten, een or die() erachter plaatsen

   //Select the database.
   mysql_select_db($_Database) or die("Kon database niet selecteren"); // or die() erachter plaatsen, variabelen niet tussen "" zetten
   
   //selct the data from the database.
   $_query = "SELECT * FROM users WHERE Nick LIKE '" . $_Nickname . "'";
   
   //Execute the query.
   $_resultaat = mysql_query($_query) or die ("Error: " . mysql_error()); // mysql_error() bij geplaatst
   
   //Put data in a array
   while($_Data = mysql_fetch_object($_resultaat)){
   
   //Gegevens uit de tabel in een variabele stoppen.
      $_SESSION['ID']         = $_Data->ID; // Variabelen niet tussen "" zetten
      $_SESSION['Anaam']      = $_Data->Anaam; // Variabelen niet tussen "" zetten
      $_SESSION['Vnaam']      = $_Data->Vnaam; // Variabelen niet tussen "" zetten
      $_SESSION['Email']      = $_Data->Email; // Variabelen niet tussen "" zetten
      $_SESSION['Phone']      = $_Data->Phone; // Variabelen niet tussen "" zetten
      $_SESSION['Nick']       = $_Data->Nick; // Variabelen niet tussen "" zetten
      $_SESSION['Wachtwoord'] = $_Data->Wachtwoord; // Variabelen niet tussen "" zetten
      $_SESSION['Status']     = $_Data->Status; // Variabelen niet tussen "" zetten
      $_SESSION['Level']      = $_Data->Level; // Variabelen niet tussen "" zetten

   //??   // Wat voor nut heeft dit commentaar ?

   if (isset($_POST["Nick"]) && $_POST["Nick"] && isset($_POST["Wachtwoord"]) && $_POST["Wachtwoord"] != ""){ // Een isset vergeten, en als $_POST['Nick'] niet bestaat krijg je bij de overige checks een error omdat je hem daar wel probeert te gebruiken.
// Tip: error_reporting(E_ALL);

      //Controleren of De wachtwoorden overeenkomen.
      if($_POST["Wachtwoord"] == $_SESSION['Wachtwoord']){

         //Controleren of de account al actief is.
         if($_SESSION['Status'] == "ja"){;
            switch($_SESSION['Level']){
               case 1: 
                        echo "         Welkom <b>". $_SESSION['Vnaam'] . "</b> Op deze site. <br>\n";
                        echo "         U hebt een level 1 account -> User.<br>";
                        echo "         <a href='Log uit.php?Name=" . $_Nickname . "'>Log uit</a><br>"; // Uitloggen met Nicknames ? Tip: Userid's
                        break;

               case 2: 
                        echo "         Welkom <b>". $_SESSION['Vnaam'] . "</b> Op deze site. <br>\n";

                        echo "         U hebt een level 2 account -> Admin.<br>";
                        echo "         <a href='Log uit.php?Name=" . $_Nickname . "'>Log uit</a><br>"; // Uitloggen met Nicknames ? Tip: Userid's

                        break;
            }
         }else{
            echo "         Uw bent nog niet geactiveerd."; // Uw wat ?
         }
      }Else{ // Verspreiden over meerdere regels ?
         echo "         Verkeerd wachtwoord, Probeer opnieuw!!\n"; // Door meerdere uitroeptekens begint de bezoeker zich al gauw geïntimideerd te voelen. Als je een officiele website hebt, zou ik 't gebruik afraden.
      }
   }
   }
?>
Waarom gebruik je voor je variabelen telkens een _ ?
De ordening vind ik ook een beetje brak (met { en }).

Succes :thumb:
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan