Avatar billede dogtown Seniormester
27. september 2010 - 11:42 Der er 12 kommentarer og
1 løsning

Gå tilbage til index ved log ud

Nederst i tråden finder i de tekniske oplysninger og link til filer.

Mit ønske er at når en logger ud,så ønsker jeg at brugeren automatisk bliver sendt til index.php eller en funktion som opdaterer siden på samme måde som "F5" (opdater siden)
Jeg har forsøgt at søge på kryds og tvers her på forumet, men de eksemplerne jeg har fundet har ikke fungeret.

Når bruger logger af med eksisterende løsning, vises stadigt gammelt indhold på siden.

Log ud kode fra index.php
if (isset($_GET['logout'])) {
    unset($_SESSION['auth_userID']);
    unset($_SESSION['auth_username']);
    echo "Du er nå lagget af!";


index.php http://pastebin.com/VNmqQ8pA
admin.php http://pastebin.com/Me8GqH6M

Server: Localhost via UNIX socket
Serverversion: 5.0.91-community
Protokolversion: 10
MySQL Tegnsæt: UTF-8 Unicode (utf8)
Web server
cpaneld
MySQL klientversion: 4.1.22
PHP extension: mysql
phpMyAdmin
Versionsinformation: 3.2.4
Avatar billede repox Seniormester
27. september 2010 - 11:48 #1
Det mest optimale ville være at linke til en logud fil istedet:
<a href="logout.php">Log af</a>


logout.php bør indeholde noget ala det samme som du selv er kommet frem til:
<?php

  session_start();
  unset($_SESSION['auth_userID']);
  unset($_SESSION['auth_username']);
  header("Location: index.php"); 

?>
Avatar billede huutt Nybegynder
27. september 2010 - 11:49 #2
tror det er noget hen af det her du mangler.

http://dk.php.net/manual/en/function.header.php


<?php
header("Location: index.php");
exit;
?>


Mvh
Huutt
Avatar billede dogtown Seniormester
27. september 2010 - 12:33 #3
med header("Location: index.php");  følgende fejlmelding! Cannot modify header information - headers already sent by....

Og hvor skal eventuelt koden under placeres?:
<?php header("Location: index.php");
exit;
?>


Jeg har allerede forsøgt disse to muligheder, men ingen løsning.
Mangler jeg eventuetl at defienere header som et eller andet?
Avatar billede repox Seniormester
27. september 2010 - 12:36 #4
Mit forslag burde virke, hvis du ikke har andet kode i logout.php. Hvis det stadig ikke virker, vil jeg gerne se hele fejlmeddelelsen.
Avatar billede Authiel Nybegynder
27. september 2010 - 12:38 #5
Der er lige et par småting. For at du kan bruge header("Location:xxxx") så skal du have følgende kode øverst på dit site (oven over <html>)

<?php
  ob_start();
?>

Det er den der tillader at du bruger headers.

Nu for at hjælpe på dit problem, hvis du bruger en knap som logud ville jeg gøre følgende:

if(isset($_POST['knappens_navn'])){
    session_destroy();
    header("Location: index.php");
}

hvis du bruger et alm. link som logud er det nok det her du søger:

<a href="logud.php">Log ud</a>

og så selvfølgelig en hel seperat .php fil som indeholde din logud kommando. Som burde være:

    session_destroy();
    header("Location: index.php");
Avatar billede repox Seniormester
27. september 2010 - 12:45 #6
#5
Du smider bare plaster på et åbent sår og undetrykker den smerte såret vil give. Udover at du giver forkerte oplysninger også!

ob_start() 'tillader' dig ikke at bruge headers. Den starter en output buffer som venter med at smide indhold til browseren ud førend du aktivt beder om det eller indtil scriptet er afsluttet.

session_destroy() er en forældet måde at fjerne sessions på i samme stil som session_register og andre medlemmer...
Avatar billede Authiel Nybegynder
27. september 2010 - 12:52 #7
#6
Kan ikke sige så meget andet end det er hvad jeg plejer at gøre.

Undskylder meget hvis det er forkerte informationer jeg har skrevet. Er ny herinde og har ikke så mange års erfaring endnu.
Avatar billede dogtown Seniormester
27. september 2010 - 12:59 #8
Fejlmedlingen er: headers already sent by (output started at /home/frimbas/public_html/12&btvg&ditto&1234/config.php:8) in /home/frimbas/public_html/12&btvg&ditto&1234/index.php on line 178

Login, log ud, edit, og regirster ligger alle inde i index.php

Config.php inneholder:
<?php
$host = "localhost";
$username = "XXXXX";
$password = "XXXXX";
$db = "XXXXXX";
$res = mysql_connect($host, $username, $password);
if (!$res) die("Could not connect to the server, mysql error: ".mysql_error($res));
$res = mysql_select_db($db);
if (!$res) die("Could not connect to the database, mysql error: ".mysql_error($res));

date_default_timezone_set("Europe/Amsterdam");

function check_email($email) {
    // First, we check that there's one @ symbol, and that the lengths are right
    if (!ereg("^[^@]{1,64}@[^@]{1,255}$", $email)) {
        // Email invalid because wrong number of characters in one section, or wrong number of @ symbols.
        return false;
    }
    // Split it into sections to make life easier
    $email_array = explode("@", $email);
    $local_array = explode(".", $email_array[0]);
    for ($i = 0; $i < sizeof($local_array); $i++) {
        if (!ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$", $local_array[$i])) {
            return false;
        }
    }
    if (!ereg("^\[?[0-9\.]+\]?$", $email_array[1])) {
        // Check if domain is IP. If not, it should be valid domain name
        $domain_array = explode(".", $email_array[1]);
        if (sizeof($domain_array) < 2) {
            return false; // Not enough parts to domain
        }
        for ($i = 0; $i < sizeof($domain_array); $i++) {
            if (!ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$", $domain_array[$i])) {
                return false;
            }
        }
    }
    return true;
}
?>
Avatar billede repox Seniormester
27. september 2010 - 14:35 #9
#7
Ved at undetrykke fejl (som eksempelvis ved at anvende ob_start() for at imødekomme problemerne med header()) lærer du kun at symptombehandle - ikke helbrede.

Du risikerer kun at skabe flere problemer for dig selv ved at kode videre med den indstilling.

#8
Så har du jo heller ikke gjort som jeg har foreslået.
logout.php skal kun indeholde det jeg foreslog oprindeligt - intet andet.
Avatar billede dogtown Seniormester
27. september 2010 - 19:40 #10
#8
Du skriver at jeg skal benytte dit forslag!
Der har jeg forsøgt at kopiere din kode ind i index.php
det gik ikke. Så har jeg forsøgt at sløjfe "<?php" og "?>"

min logut.php ligger inde i index.php
j.fr. link til index.php linie 177

Jeg har ingen knap for log ud, blot tekst: "<a href='index.php?logout'>Log af"

Det virker som jeg skal modtage informationen intravenøst for at jeg skal forstå dette! sorry :-(
Avatar billede repox Seniormester
27. september 2010 - 20:03 #11
#10
Du har ikke fulgt mit forslag - mit forslag var at lægge funktionaliteten til at logge af i en separat fil - nemlig logout.php

Den ene fil indeholder kun de 8 linier jeg foreslog i mit oprindelige forslag og skal derfor - overhovedet ikke - have noget at gøre med index.php; det skal ikke ind på nogle bestemte linier, eller implementeres i andre filer - det skal bare ligge i en fil for sig selv.

Og som jeg også skrev i mit første forslag, skal du linke til den ene fil - altså <a href="logout.php">Log af</a> og ikke din modificerede udgave af mit forslag.
Avatar billede dogtown Seniormester
27. september 2010 - 20:32 #12
Det har jeg også forsøgt :-(
Jeg holder nu en liten pause, for at se igennem hele lortet en gagn til....
Strømmen gik og nu er der kludder i PC og filer :-(
Avatar billede dogtown Seniormester
12. oktober 2010 - 13:18 #13
Jeg fandt en løsning!
jeg brugte scriptet fra admin.php som viser "logind" hvis en ikke er logget ind.


//show login form when not logged in
}
if (!isset($_SESSION['auth_userID'])) {
    ?>
    <form action="index.php" method="post">
        <p><label>Brugernavn: </label><input type="text" name="username" /></p>
        <p><label>Kodeord: </label><input type="password" name="password" /></p>
        <input type='submit' name='login' value='log in' />
    </form>
    <?php
    die();

}
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



IT-JOB