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ø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
Annonceindlæg fra Pax8
Slettet bruger
02. juni 2005 - 10:49
#1
Hvad med bare: unset($_SESSION["login"]);
logud.php -> <? session_start(); unset($_SESSION["login"]); session_destroy(); include ("database.php"); include ("bruger.php"); ?>
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(); ?>
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.
men nu er priserne fast defineret til førmoms fordi den ikke vil unset og bruge min "else" istedet :)
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.
jo.. men så laver den det ikke om når jeg logger ind. så nu er det det modsatte problem
Slettet bruger
02. juni 2005 - 12:35
#10
Må jeg se indholdet af: /php/bil/html/logud.php
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"> </td> <td align="left" valign="top" background="../hojre.gif"><? session_start(); session_unset(); session_destroy(); ?>
Slettet bruger
02. juni 2005 - 13:31
#12
Det ser ud som om vi skal have fat i bruger.php istedet.
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; } } ?>
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; } }
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. }
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 :/
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"> </td> <td align="left" valign="top" background="../hojre.gif"><? session_start(); session_unset(); session_destroy(); ?>
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"]."");
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
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 :)
Vi tilbyder markedets bedste kurser inden for webudvikling