ForumCała strona

Nawigacja

Aktualnie online

Gości online: 18

Użytkowników online: 0

Łącznie użytkowników: 25,405
Najnowszy użytkownik: kipolas

Logowanie

Nazwa użytkownika

Hasło



Zarejestruj się

Odzyskaj hasło

Shoutbox

Musisz zalogować się, aby móc dodać wiadomość.

JazOOn
25.06.2025 23:43:19
Dziadziejemy jantom...

jantom
23.06.2025 21:37:31
Z ciekawo?ci pogrzeba?em w historii i jest gorzej ni? my?la?em. Skórka Nadzieja ma ju? 17 lat.

jantom
23.06.2025 21:33:12
... troch? zasiedzia?o Wink

jantom
23.06.2025 21:32:38
Cecha tego, jak z 20+ lat temu pisano strony - tabelki wsz?dzie, szczególnie do tworzenia uk?adów stron. PF d?ugo by? wierny tej tradycji. A obecny szablon Supportu napisa?em z 15 lat temu i chyba mu

Zbigniew@
22.06.2025 17:50:03
Dlaczego forum jest dost?pne tylko dla 10% ludzi? Poniewa? wi?kszo?? osób korzysta z internetu na urz?dzeniach mobilnych.

Pobierz now? wersj?
Pobierz podr?cznik
Zobacz inne oficjalne Supporty
Statystyki supportu
PHP-Fuson PL na Facebooku

RSS

Polecamy hosting SferaHost.pl

Nawigacja

Pozbywamy si? setuser.php

Napisane przez CyberSoft dnia 17 października 2008 11:20 · 9 komentarzy · 6844 czytań · Drukuj · Facebook · Wykop

Streszczenie:

Czy nie denerwuje Ci?, ?e przy ka?dym logowaniu, wylogowaniu wywo?ywany jest plik setuser.php, a ca?a procedura logowania czy wylogowania trwa i trwa. W tym artykule poka?e, jak pozby? si? pliku, a w dodatku wprowadzi? troch? nowoczesno?ci do naszego PHP-Fusiona.

Na pewno jednym z wielu charakterystycznych cech dla fusiona jest sposób logowania i wylogowywania. Zawsze po takiej operacji zostajesz na moment przekierowany na inn? stron? a nast?pnie na kolejn?. Ten artyku? powsta? po to by pokaza? jak pozby? si? tego pliku. Artyku? napisany na podstawie wersji 06.01.15


Krok 1

Tworzymy kopi? zapasow? nast?puj?cych plików :

  • maincore.php
  • setuser.php
  • infusion/user_info_panel/user_info_panel.php

Krok 2

Teraz usuwamy ca?y plik setuser.php, nast?pnie przechodzimy do edycji pliku maincore.php
Odszukujemy linie 162, powinni?my odnale?? tam taki kod:



if (isset($_POST['login'])) {
$user_pass = md5($_POST['user_pass']);
$user_name = preg_replace(array("/\=/","/\#/","/\sOR\s/"), "", stripinput($_POST['user_name']));
$result = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_name='$user_name' AND (user_password='".md5($user_pass)."' OR user_password='$user_pass')");
if (dbrows($result) != 0) {
$data = dbarray($result);
if ($data['user_password'] == $user_pass) {
$result = dbquery("UPDATE ".$db_prefix."users SET user_password='".md5($user_pass)."' WHERE user_id='".$data['user_id']."'");
}
$cookie_value = $data['user_id'].".".$user_pass;
if ($data['user_status'] == 0) {
$cookie_exp = isset($_POST['remember_me']) ? time() + 3600*24*30 : time() + 3600*3;
header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'");
setcookie("fusion_user", $cookie_value, $cookie_exp, "/", "", "0");
redirect(BASEDIR."setuser.php?user=".$data['user_name'], "script");
} elseif ($data['user_status'] == 1) {
redirect(BASEDIR."setuser.php?error=1", "script");
} elseif ($data['user_status'] == 2) {
redirect(BASEDIR."setuser.php?error=2", "script");
}
} else {
redirect(BASEDIR."setuser.php?error=3");
}
}

Zmieniamy go na:



if (isset($_POST['login'])) {
$user_pass = md5($_POST['user_pass']);
$user_name = preg_replace(array("/\=/","/\#/","/\sOR\s/"), "", stripinput($_POST['user_name']));
$result = dbquery("SELECT * FROM ".$db_prefix."users WHERE user_name='$user_name' AND (user_password='".md5($user_pass)."' OR user_password='$user_pass')");
if (dbrows($result) != 0) {
$data = dbarray($result);
if ($data['user_password'] == $user_pass) {
$result = dbquery("UPDATE ".$db_prefix."users SET user_password='".md5($user_pass)."' WHERE user_id='".$data['user_id']."'");
}
$cookie_value = $data['user_id'].".".$user_pass;
if ($data['user_status'] == 0) {
$cookie_exp = isset($_POST['remember_me']) ? time() + 3600*24*30 : time() + 3600*3;
header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'");
setcookie("fusion_user", $cookie_value, $cookie_exp, "/", "", "0");
redirect($_SERVER['HTTP_REFERER']);
} elseif ($data['user_status'] == 1) {
$loginerror = $locale['194'];
} elseif ($data['user_status'] == 2) {
$loginerror = $locale['195'];
}
} else {
$loginerror = $locale['196'];
}
}

if (isset($_REQUEST['logout']) && $_REQUEST['logout'] == "yes") {
header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'");
setcookie("fusion_user", "", time() - 7200, "/", "", "0");
setcookie("fusion_lastvisit", "", time() - 7200, "/", "", "0");
$result = dbquery("DELETE FROM ".$db_prefix."online WHERE online_ip='".USER_IP."'");
redirect($_SERVER['HTTP_REFERER']);
}


Krok 3

Teraz praktycznie ju? na amen pozbyli?my go. Teraz trzeba przystosowa? fusiona do nowych realiów. Tak naprawd? to nic trudnego, bo w kodzie mo?na odnale?? ?lady, pozostawione przez programistów ?e mia?o co? podobnego by? ale nie zrobili. Tak wi?c wykorzystamy to co zrobili
Przechodzimy teraz do pliku infusion/user_info_panel/user_info_panel.php
W lini 27. tego pliku odnajdujemy wpis pozostawiony przez programistów, który wykorzystamy



echo "<div align='center'>".(isset($loginerror) ? $loginerror : "")."

U?yjemy go do wy?wietlania informacji o b??dzie podczas logowania. Jedyne co musimy w tym pliku poprawi? to wylogowywanie. Zmieniamy lini? 23 z:



echo "<img src='".THEME."images/bullet.gif' alt=''> <a href='".BASEDIR."setuser.php?logout=yes' class='side'>".$locale['084']."</a>\n";

Na:

echo "<img src='".THEME."images/bullet.gif' alt=''> <a href='".BASEDIR."index.php?logout=yes' class='side'>".$locale['084']."</a>\n";


Paczka do pobrania : no_setuser.zip

Komentarze

#1 | zezol dnia 25 października 2008 22:32
Dziwie si?, ?e pisa?e? t? modyfikacj? pod v6, bo przyda?oby si? to pod v7...
#2 | CyberSoft dnia 27 października 2008 18:21
Wersja V7 jest ca?kowicie poza moim zainteresowaniem.
#3 | kisielll dnia 03 listopada 2008 20:06
Dzieki CyberSoft za t? wtyczke!
Mam tylko kilka pyta?.
1: Po co robi? kopie login.php ?
2: Po co zamienia?
Rozwiń Kod źródłowy
na
Rozwiń Kod źródłowy
? Przecie? to to samo.
3: Mam starsz? wersje v6 i musia?em zamieni? w?a?nie w 23 linijce:
Rozwiń Kod źródłowy

na
Rozwiń Kod źródłowy

4: do czego wykorzystujemy
Rozwiń Kod źródłowy
?
#4 | CyberSoft dnia 04 listopada 2008 18:42
AD1. W sumie jest to zb?dne, pocz?tkowo planowa?em wprowadzenie modyfikacji równie? do tego pliku, jednak zapomnia?em potem usun?? go z listy plików do wykonania backupa.

AD2. B??d w wy?wietlaniu artyku?u.

AD3. Tak samo jest w 6.1.15

AD5. Kolejny b??d.
#5 | Artur-M dnia 16 stycznia 2009 22:40
Mo?na prosi? o taki artyku? dla PHP-Fusion v7?
#6 | kingsor dnia 01 września 2009 12:18
pic na wode. zrobi?e wszystko jak w poradniku i nie da sie wylogowac . buaahha.
#7 | kintar dnia 07 listopada 2009 23:34
wszystko ?miga jak powinno, musia?e? co? po drodze spierdzielic
#8 | fido1983 dnia 08 lutego 2010 10:01
Zauwa?y?em ?e w maincore.php pojawia si? zmienna $_SERVER['HTTP_REFERER']
Czy to oznacza, ?e ta modyfikacja po zalogowaniu przekieruje nas do strony poprzednio ogl?danej?
#9 | fido1983 dnia 08 lutego 2010 10:10
super dzia?a!

Dodaj komentarz

Zaloguj się, aby móc dodać komentarz.

Oceny

Tylko zarejestrowani użytkownicy mogą oceniać zawartość strony
Zaloguj się lub zarejestruj, żeby móc zagłosować.

Brak ocen. Może czas dodać swoją?
Created by Arox Copyright (C) 2004
Copyright (C) 2004 - 2018 Ekipa PHP-Fusion.pl