Skocz do zawartości

Zdjęcie
* * * * * 1 głosy

przeniesienie zmiennej


11 odpowiedzi w tym temacie
  • Zaloguj się, aby dodać odpowiedź
Semis

    Nowy użytkownik

  • 15 postów
    • Czas spędzony online: 2h 47m 23s
1
Neutralna
  • LocationSiemianowice Śląskie

Napisano 19 marca 2014 - 00:10

#1

Witam mam taki problem

 

mam forme logowanie no i sprawdza ona czy są podane dobra pasy, jeśli nie to dadawane jest echo, ale szukam sposoby jak sprawdzić, czy użytkownik się wylogował ;/ 

 

mam takie kody :

 

login.php

<?php
include 'config.php';
db_connect();

if(!$_SESSION['logged']) {
    if(isset($_POST['name'])) {
        $_POST['name'] = clear($_POST['name']);
        $_POST['password'] = clear($_POST['password']);
        $_POST['password'] = codepass($_POST['password']);
 
        $result = mysql_query("SELECT `user_id` FROM `users` WHERE `user_name` = '{$_POST['name']}' AND `user_password` = '{$_POST['password']}' LIMIT 1");
        if(mysql_num_rows($result) > 0) {
         
            $row = mysql_fetch_assoc($result);
            $_SESSION['logged'] = true;
            $_SESSION['user_id'] = $row['user_id'];
            $result = mysql_query($query,$server1);
header( "Location: index.php" ) ;
exit() ;
        } else {
            echo '<center><div class="wrong"><p>Login or Password is wrong. Try Again.</p></div></center>';
        }
    }
 

    echo
     '
<html>
...

no i logout.php

<?php
session_start();
$_SESSION['logged'] = false;
$_SESSION['user_id'] = -1;
header( "Location: login.php" ) ;
exit() ;
?>

Ogólnie chodzi o to, żeby wyświetlić takie same echo jak w przypadku złych danych tylko, że z informacją "Zostałeś wylogowany poprawnie. Zapraszamy ponownie".no tak sobie myślę, a może dodam zmienną np $cookies w logout.php, przeniosę ją do login i sprawdzę czy jest wartość 1 ale nie umiem.

 

 

ma ktoś jakiś pomysł na to?

 


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 19 marca 2014 - 08:57

#2

1. Nie możesz walnąć echo tekstu przed tagiem html :)

2. w login.php zapomniałeś o session_start() a w logout session_destroy() zaraz przed header(...);

3. Jakie echo w przypadku złych danych, przecież do logout nie trzeba żadnych danych


  • 0

webDeveloper


JJay

    Stary wyjadacz

  • 199 postów
    • Czas spędzony online: 5d 9h 38m 21s
19
Dobra
  • LocationCieszyn > Łódź

Napisano 15 kwietnia 2014 - 14:01

#3

Semis ;) $_SESSION['logged'];

Jak chcesz żeby pokazywało "Wylogowano bla bla" to

<?php
session_start();
$_SESSION['logged'] = false;
$_SESSION['user_id'] = -1;
session_destroy();
echo 'Wylogowano pomyślnie. Zostaniesz zaraz przeniesiony/a na stronę logowania';
sleep(10); //sekundy jak długo skrypt ma "spać" przed przeniesieniem na stronę logowania
header( "Location: login.php" ) ;
exit() ;
?>

  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 15 kwietnia 2014 - 14:07

#4

hahaha. Funkcja sleep niestety tylko opóźni wykonanie skryptu. Stosowanie tej funkcji jest zbędne.


  • 0

logo-green-dark.png


JJay

    Stary wyjadacz

  • 199 postów
    • Czas spędzony online: 5d 9h 38m 21s
19
Dobra
  • LocationCieszyn > Łódź

Napisano 15 kwietnia 2014 - 14:11

#5

Mi jakoś to działało na stronce ;)


  • 0

unbreak

    WT Elite

  • 1 937 postów
    • Czas spędzony online: 27d 8h 43m 36s
506
Znakomita!
  • Location/home/unbreak

Napisano 15 kwietnia 2014 - 15:28

#6

writen, domyślam się że o to właśnie chodziło, żeby komunikat wyświetlał się przez parę sekund :)


  • 0

webDeveloper


writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 15 kwietnia 2014 - 17:38

#7

Ale komunikat się nie wyświetli w ogóle. Bo sleep opóźnia wysłanie wyniku do przeglądarki. Przynajmniej tak to u mnie działa. 

Musiałem sprawdzić, bo nigdy z tego nie korzystałem.

PHP jest wykonywany po stronie serwera przez co dostajemy tylko końcowy wynik.


  • 0

logo-green-dark.png


Yeoman

    Stary wyjadacz

  • 358 postów
    • Czas spędzony online: 6d 19h 43m 48s
169
Znakomita!
  • LocationKatowice

Napisano 15 kwietnia 2014 - 18:39

#8

 

writen, domyślam się że o to właśnie chodziło, żeby komunikat wyświetlał się przez parę sekund

Dajcie timeouta w JS :D


  • 0

2ed58r7.png


writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 15 kwietnia 2014 - 19:13

#9

Dobra panowie. Nie przeciągajmy, Rozwiązanie problemu wygląda tak:

<?php
session_start();
$_SESSION['logged'] = false;
$_SESSION['user_id'] = -1;
session_destroy();
echo 'Wylogowano pomyślnie. Zostaniesz zaraz przeniesiony/a na stronę logowania';
header('Refresh: 5; url=login.php') ;
exit() ;
?>

  • 1

logo-green-dark.png


JJay

    Stary wyjadacz

  • 199 postów
    • Czas spędzony online: 5d 9h 38m 21s
19
Dobra
  • LocationCieszyn > Łódź

Napisano 15 kwietnia 2014 - 21:33

#10
To jakim CUDEM u mnie ładnie opóźniało header() a wcześniejszy kod (html) mi pokazywało ? ;)

Dajcie timeouta w JS :D

Eeee, po co ? Obciążanie klienta :/ JS jest dobry ale skoro można wykorzystać HTML/PHP to nie ma sensu
  • 0

writen

    Stary wyjadacz

  • 458 postów
    • Czas spędzony online: 29d 22h 59m 44s
133
Znakomita!

Napisano 15 kwietnia 2014 - 21:41

#11

oj nie wiem. nie potrafię tego wytłumaczyć. Ale to tylko niepotrzebne obciążenie. Bo funkcja ta opóźnia nam ładowanie strony, tzn. strona ładuje się przez te sekundy. A rozwiązanie, które podałem to to samo jakbyśmy dali przekierowanie w html'u: 

 <meta http-equiv="Refresh" content="5; url=http://www.example.com/" />

  • 1

logo-green-dark.png


JJay

    Stary wyjadacz

  • 199 postów
    • Czas spędzony online: 5d 9h 38m 21s
19
Dobra
  • LocationCieszyn > Łódź

Napisano 16 kwietnia 2014 - 10:06

#12
Tak, dzięki header łatwiej, szybciej, mniej kodu :)
  • 0




Użytkownicy przeglądający ten temat: 0

0 użytkowników, 0 gości, 0 anonimowych