Avatar billede fri0z Nybegynder
02. juni 2005 - 10:46 Der er 19 kommentarer og
1 løsning

session unset?

jeg har dette:
<? session_start();
ob_start();
$_SESSION['login'] = '1';

include ("database.php");
include ("bruger.php");
?> -->

<tr>
    <td width=\"250\">Navn</td>
    <td width=\"100\">Km</td>
    <td width=\"150\">pris</td>
    <td width=\"202\">d&oslash;re</td>
  </tr>";
if($_SESSION[login] == '1' ){
while($data = mysql_fetch_array($sql)) {
echo  "<tr>
    <td>$data[navn]</td>
    <td>$data[km]</td>
    <td>$data[prisex]</td>
    <td>$data[dore]</td>
  </tr>";
  }}
  else {
  while($data = mysql_fetch_array($sql)) {
echo  "<tr>
    <td>$data[navn]</td>
    <td>$data[km]</td>
    <td>$data[prisinc]</td>
    <td>$data[dore]</td>
  </tr>";
}}
echo "</table>";
?>

og skal have $_SESSION['login'] = '1';
unset når jeg logger ud


<? session_start();
session_unset();
session_destroy();



include ("database.php");
include ("bruger.php");
?> dette virker ikke :/ pllz help! :D
Avatar billede Slettet bruger
02. juni 2005 - 10:49 #1
Hvad med bare:

unset($_SESSION["login"]);
Avatar billede fri0z Nybegynder
02. juni 2005 - 10:56 #2
virker ikke
Avatar billede fri0z Nybegynder
02. juni 2005 - 10:57 #3
logud.php ->
<? session_start();
unset($_SESSION["login"]);
session_destroy();



include ("database.php");
include ("bruger.php");
?>
Avatar billede Slettet bruger
02. juni 2005 - 11:08 #4
Hvorfor includer du database.php og bruger.php ?

din logud.php skal vel bare smadre session, og derefter smide brugeren videre til en anden side?

Dette er taget ud fra manualen.
men undre mig over at en normal unset ikke virker.

<?PHP
session_start();
$_SESSION = array();
session_destroy();
?>
Avatar billede Slettet bruger
02. juni 2005 - 11:10 #5
Men det virker vel også fint med at den smadre den session der er sat.
Problemet ligger vel i at du når dit script loades sætter du:

$_SESSION['login'] = '1';

Men nu ved jeg jo ikke helt hvordan det skal hænge sammen.
Avatar billede fri0z Nybegynder
02. juni 2005 - 11:15 #6
http://mads1.wi2.ots.dk/php/bil/html/vrag.php

problemet er at priserne ændre sig når du logger ind til førmoms.. og når du logger ud skal de ændre sig tilbage til normal pris..

admin
210387
Avatar billede fri0z Nybegynder
02. juni 2005 - 11:16 #7
men nu er priserne fast defineret til førmoms fordi den ikke vil unset og bruge min "else" istedet :)
Avatar billede Slettet bruger
02. juni 2005 - 11:54 #8
Fordi du gør sådan i starten af din fil:

<? session_start();
ob_start();
$_SESSION['login'] = '1';

så ligegyldig om man trykker på logud, og siden reloader vil den jo igen sætte en session login der er lig med 1.

I filen: /php/bil/html/logud.php
hvor du tjekker om en bruger eksister og logger ind, skal du hvis brugeren må logge ind:

$_SESSION['login'] = '1';

og så smide videre til den side man skal se når man er logget ind.

På alle sider skal du så stadig have en session_start();
men ikke sætte en $_SESSION['login'] = 1;
Da du jo med den variabel fortæller at brugeren er logget ind.
Avatar billede fri0z Nybegynder
02. juni 2005 - 12:19 #9
jo.. men så laver den det ikke om når jeg logger ind. så nu er det det modsatte problem
Avatar billede Slettet bruger
02. juni 2005 - 12:35 #10
Må jeg se indholdet af:
/php/bil/html/logud.php
Avatar billede fri0z Nybegynder
02. juni 2005 - 13:05 #11
<? session_start();



include ("database.php");
include ("bruger.php");
?>


<?
$bruger = new bruger();

if(isset($_POST["brugernavn"]) &&
  isset($_POST["kodeord"])){
    if(get_magic_quotes_gpc()){
        $brugernavn = stripslashes($_POST["brugernavn"]);
        $kodeord = stripslashes($_POST["kodeord"]);
    } else {
        $brugernavn = $_POST["brugernavn"];
        $kodeord = $_POST["kodeord"];
    }
  if($bruger->log_ind($brugernavn, $kodeord) == false)
    echo "<font color=red>fejl i login</font><br>\n";
}

if( $bruger->logget_ind() ){
  echo "Du er logget ind som " ;
  echo $bruger->hent_brugernavn();
  echo "\n";
  echo "Klik <a href=logud.php>her</a> for at logge ud\n";
} else {
  echo "<form method = post action = $PHP_SELF>\n";
  echo "Forhandler Login:<br>
<input name=brugernavn>\n";
  echo "kode:<br>
<input type=password name=kodeord>\n";
  echo "<input type=submit value=\"log ind\">\n";
  echo "</form>\n";

}
?></td>
  </tr>
  <tr>
    <td height="338" background="../venstre.gif">&nbsp;</td>
    <td align="left" valign="top" background="../hojre.gif"><?
session_start();
session_unset();
session_destroy();

?>
Avatar billede Slettet bruger
02. juni 2005 - 13:31 #12
Det ser ud som om vi skal have fat i bruger.php istedet.
Avatar billede fri0z Nybegynder
02. juni 2005 - 13:41 #13
<?
class bruger{
    var $brugernavn, $kodeord;

    function bruger(){
    if(isset($_SESSION["brugernavn"]) &&
        isset($_SESSION["kodeord"]))
      $this->log_ind($_SESSION["brugernavn"], $_SESSION["kodeord"]);
  }

  function log_ind($brugernavn, $kodeord){
    $bruger_slash = addslashes($brugernavn);
    $kode_slash = addslashes($kodeord);
    $foresp =
      mysql_query("SELECT * FROM bruger ".
          "WHERE brugernavn = '$bruger_slash' AND ".
          "kodeord = '$kode_slash'");
    if(mysql_num_rows($foresp) == 1){
      $this->brugernavn = $brugernavn;
      $this->kodeord = $kodeord;
      $_SESSION["brugernavn"] = $this->brugernavn;
      $_SESSION["kodeord"] = $this->kodeord;
      return true;
    } else {
        $this->log_ud();
      return false;
    }
  }

  function log_ud(){
    if($this->logget_ind()){
              unset($this->brugernavn);
              unset($_SESSION["brugernavn"]);
              unset($this->kodeord);
              unset($_SESSION["kodeord"]);
              return true;
    } else
              return false;
  }

  function logget_ind(){
    if(isset($this->brugernavn) && isset($this->kodeord))
      return true;
    else
      return false;
  }

  function opret($brugernavn, $kodeord){
    $bruger_slash = addslashes($brugernavn);
    $kode_slash = addslashes($kodeord);
    $foresp = mysql_query("SELECT * FROM bruger ".
              "WHERE brugernavn = '$bruger_slash'");
    if(mysql_num_rows($foresp) != 0)
      return false;
    else{
      mysql_query("INSERT INTO bruger (brugernavn, kodeord) ".
          "VALUES ('$bruger_slash', '$kode_slash')");
      return true;
    }
  }

  function fjern($brugernavn){
    $bruger_slash = addslashes($brugernavn);
    $foresp = mysql_query("SELECT * FROM bruger ".
              "WHERE brugernavn = '$bruger_slash'");
    if(mysql_num_rows($foresp) != 1)
      return false;
    else{
      mysql_query("DELETE FROM bruger ".
          "WHERE brugernavn = '$bruger_slash");
      return true;
    }
  }

  function hent_brugernavn(){
    if($this->logget_ind())
          return $this->brugernavn;
    else
        return "";
  }

  function hent_kodeord(){
    if($this->logget_ind())
        return $this->kodeord;
    else
        return "";
  }

  function ret_kodeord($kodeord){
    if($this->logget_ind()){   
    $bruger_slash = addslashes($this->brugernavn);
    $kode_slash = addslashes($kodeord);
    mysql_query("UPDATE bruger ".
        "SET kodeord = '$kode_slash' ".
        "WHERE brugernavn = '" . $bruger_slash . "'");
    $this->kodeord = $kodeord;
    $_SESSION["kodeord"] = $kodeord;
    return true;
      } else
    return false;
  }
}
?>
Avatar billede Slettet bruger
02. juni 2005 - 14:01 #14
Prøv at erstatte funktionen log_ind med nedenstående:

  function log_ind($brugernavn, $kodeord){
    $bruger_slash = addslashes($brugernavn);
    $kode_slash = addslashes($kodeord);
    $foresp =
      mysql_query("SELECT * FROM bruger ".
          "WHERE brugernavn = '$bruger_slash' AND ".
          "kodeord = '$kode_slash'");
    if(mysql_num_rows($foresp) == 1){
      $this->brugernavn = $brugernavn;
      $this->kodeord = $kodeord;
      $_SESSION["brugernavn"] = $this->brugernavn;
      $_SESSION["kodeord"] = $this->kodeord;
      $_SESSION["login"] = 1;
      return true;
    } else {
        $this->log_ud();
      return false;
    }
  }
Avatar billede Slettet bruger
02. juni 2005 - 14:03 #15
Men der bliver allerede sat en session med brugernavnet, så istedet for:

$_SESSION[login] == '1'

kunne du egentlig bare have sagt:

if(isset($_SESSION["brugernavn"])) {
// bruger er logget ind.
} else {
// Bruger er ikke logget ind.
}
Avatar billede fri0z Nybegynder
02. juni 2005 - 14:06 #16
ja nu funker det næsten.. men skal stadig hen og opdatere en extra gang inden priserne ændre sig :/
Avatar billede Slettet bruger
02. juni 2005 - 14:15 #17
Well det kan skam klares med en location :)
Prøv at ændre indholdet i logud.php til:

<?
$bruger = new bruger();

if(isset($_POST["brugernavn"]) &&
  isset($_POST["kodeord"])){
    if(get_magic_quotes_gpc()){
        $brugernavn = stripslashes($_POST["brugernavn"]);
        $kodeord = stripslashes($_POST["kodeord"]);
    } else {
        $brugernavn = $_POST["brugernavn"];
        $kodeord = $_POST["kodeord"];
    }
  if($bruger->log_ind($brugernavn, $kodeord) == false) {
    echo "<font color=red>fejl i login</font><br>\n";
  } else {
      header("Location: ".$_SERVER["PHP_SELF"].");
      exit;
  }
}

if( $bruger->logget_ind() ){
  echo "Du er logget ind som " ;
  echo $bruger->hent_brugernavn();
  echo "\n";
  echo "Klik <a href=logud.php>her</a> for at logge ud\n";
} else {
  echo "<form method = post action = $PHP_SELF>\n";
  echo "Forhandler Login:<br>
<input name=brugernavn>\n";
  echo "kode:<br>
<input type=password name=kodeord>\n";
  echo "<input type=submit value=\"log ind\">\n";
  echo "</form>\n";

}
?></td>
  </tr>
  <tr>
    <td height="338" background="../venstre.gif">&nbsp;</td>
    <td align="left" valign="top" background="../hojre.gif"><?
session_start();
session_unset();
session_destroy();

?>
Avatar billede Slettet bruger
02. juni 2005 - 14:15 #18
hov, det vil give en fejl.
find linjen:

header("Location: ".$_SERVER["PHP_SELF"].");
og ret den til:

header("Location: ".$_SERVER["PHP_SELF"]."");
Avatar billede fri0z Nybegynder
02. juni 2005 - 16:57 #19
Warning: Cannot modify header information - headers already sent by (output started at D:\inetpub\vhosts\wi2.ots.dk\subdomains\mads1\httpdocs\php\bil\html\database.php:2) in D:\inetpub\vhosts\wi2.ots.dk\subdomains\mads1\httpdocs\php\bil\html\logud.php on line 71


:P
Avatar billede Slettet bruger
03. juni 2005 - 09:27 #20
så skal du bare have en ob_start(); ind øverst.
ikke den bedste løsning, men det virker :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester