Przywrócenie logowania i wylogowywania z setuser dla wersji v7.02.xx
|
nmpministranci |
Dodany dnia 13.08.2011 11:09:13
|
Początkujący
Postów: 135 Pomógł: 1 Ostrzeżeń: 3
Data rejestracji: 18.11.2007 08:08
|
Witam wszystkich.
Po aktualizacji do wersji v7.02.03 zauważyłem, że teraz logowanie do systemu odbywa się już w standardzie bez użycia setuser'a. Mnie jednak zależy, by przywrócić ten stan rzeczy, który jeszcze pamiętam z v7.00. Wiem, że wielu osobom jest to dziwne, ale mi na tym strasznie zależy. Będę bardzo wdzięczny.
Pozdrawiam,
Krzysiek.
P.S. Mam nadzieję, że prawidłowo nazwałem temat i znajduje się on w prawidłowym dziale forum. Jeśli coś zrobiłem "nie tak" proszę się nie gniewać.
Połączony z 24 sierpień 2011 12:48:
Walczę już kolejny tydzień z tym problemem i dalej nic. Naprawdę nie macie żadnej rady ani pomysłu na mój problem? Bardzo proszę Was o wsparcie.
Pozdrawiam i dziękuje,
Krzysiek.
PW od moderatora:
- Przeniesienie tematu - Pieka 13.08 - 11:16
Edytowane przez nmpministranci dnia 24.08.2011 12:48:27
Born to be Wild.
|
|
|
|
Wścibski Gość |
Dodany dnia 24.11.2024 21:47:33
|
Pan Kontekstualny
Postów: n^x
Data rejestracji: Zawsze
|
|
IP: localhost |
|
|
Fasonsql |
Dodany dnia 24.08.2011 13:12:35
|
Przedszkolak
Postów: 75 Pomógł: 3 Ostrzeżeń: 1
Data rejestracji: 01.01.2011 20:26
|
Witam, od razu mówię, że nie miałem czasu sprawdzić czy ten sposób działa więc na początek zrób kopie pliku setuser.php
Następnie uruchom plik setuser.php, powinieneś mieć taką zawrtość:
<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: setuser.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at http://www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once "maincore.php";
redirect($settings['opening_page']);
mysql_close($db_connect);
?>
Zmień na:
<?php
/*-------------------------------------------------------+
| PHP-Fusion Content Management System
| Copyright (C) 2002 - 2011 Nick Jones
| http://www.php-fusion.co.uk/
+--------------------------------------------------------+
| Filename: setuser.php
| Author: Nick Jones (Digitanium)
+--------------------------------------------------------+
| This program is released as free software under the
| Affero GPL license. You can redistribute it and/or
| modify it under the terms of this license which you
| can read by viewing the included agpl.txt or online
| at http://www.gnu.org/licenses/agpl.html. Removal of this
| copyright header is strictly prohibited without
| written permission from the original author(s).
+--------------------------------------------------------*/
require_once "maincore.php";
include THEME."theme.php";
echo "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>\n";
echo "<html>\n<head>\n";
echo "<title>".$settings['sitename']."</title>\n";
echo "<meta http-equiv='Content-Type' content='text/html; charset=".$locale['charset']."' />\n";
echo "<meta http-equiv='refresh' content='2; url=".$settings['opening_page']."' />\n";
echo "<meta name='description' content='".$settings['description']."' />\n";
echo "<meta name='keywords' content='".$settings['keywords']."' />\n";
echo "<style type='text/css'>html, body { height:100%; }</style>\n";
echo "<link rel='stylesheet' href='".THEME."styles.css' type='text/css' />\n";
if (function_exists("get_head_tags")) { echo get_head_tags(); }
echo "</head>\n<body class='tbl2 setuser_body'>\n";
echo "<table style='width:100%;height:100%'>\n<tr>\n<td>\n";
echo "<table cellpadding='0' cellspacing='1' width='80%' class='tbl-border center'>\n<tr>\n";
echo "<td class='tbl1'>\n<div style='text-align:center'><!--setuser_pre_logo--><br />\n";
echo "<img src='".BASEDIR.$settings['sitebanner']."' alt='".$settings['sitename']."' /><br /><br />\n";
if (iMEMBER && (isset($_REQUEST['logout']) && $_REQUEST['logout'] == "yes")) {
header("P3P: CP='NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM'");
setcookie(COOKIE_PREFIX."user", "", time() - 7200, "/", "", "0");
setcookie(COOKIE_PREFIX."lastvisit", "", time() - 7200, "/", "", "0");
$result = dbquery("DELETE FROM ".DB_ONLINE." WHERE online_ip='".USER_IP."'");
echo "<strong>".$locale['global_192'].$userdata['user_name']."</strong><br /><br />\n";
} else {
if (isset($_GET['error']) && $_GET['error'] == 1) {
echo "<strong>".$locale['global_194']."</strong><br /><br />\n";
} elseif (isset($_GET['error']) && $_GET['error'] == 2) {
echo "<strong>".$locale['global_195']."</strong><br /><br />\n";
} elseif (isset($_GET['error']) && $_GET['error'] == 3) {
echo "<strong>".$locale['global_196']."</strong><br /><br />\n";
} else {
if (isset($_COOKIE[COOKIE_PREFIX.'user'])) {
$cookie_vars = explode(".", $_COOKIE[COOKIE_PREFIX.'user']);
$user_pass = preg_check("/^[0-9a-z]{32}$/", $cookie_vars['1']) ? $cookie_vars['1'] : "";
$user_name = preg_replace(array("/\=/","/\#/","/\sOR\s/"), "", stripinput($_GET['user']));
if (!dbcount("(user_id)", DB_USERS, "user_name='".$user_name."' AND user_password='".md5($user_pass)."'")) {
echo "<strong>".$locale['global_196']."</strong><br /><br />\n";
} else {
$result = dbquery("DELETE FROM ".DB_ONLINE." WHERE online_user='0' AND online_ip='".USER_IP."'");
echo "<strong>".$locale['global_193'].$_GET['user']."</strong><br /><br />\n";
}
}
}
}
echo $locale['global_197']."<br /><br />\n";
echo "</div>\n</td>\n</tr>\n</table>\n";
echo "</td>\n</tr>\n</table>\n";
echo "</body>\n</html>\n";
mysql_close();
ob_end_flush();
?>
Od razu mówię, że mam dziś mało czasu i nie przyjrzałem się temu dokładniej więc może nie działać prawidłowo, więc zrób kopie pliku setuser.php i w razie błędy zastąp plik po edycji kopią.
Aplikacje Windows Phone | Front-end Developer | Web-Designer
|
|
|
|
nmpministranci |
Dodany dnia 24.08.2011 13:37:39
|
Początkujący
Postów: 135 Pomógł: 1 Ostrzeżeń: 3
Data rejestracji: 18.11.2007 08:08
|
Niestety ten zabieg nie pomógł. Moim zdaniem problem nie leży tylko w sferze pliku setuser.php. Proszę o dalsze sugestie. @Rafcio34 dzięki za zainteresowanie.
Born to be Wild.
|
|
|
|
jozio_94 |
Dodany dnia 24.08.2011 23:46:19
|
Przedszkolak
Postów: 84 Pomógł: 7 Ostrzeżeń: 2
Data rejestracji: 15.02.2011 21:39
|
Ja również dołączam się do prośby autora tematu. Od dłuższego czasu walczę z przywróceniem pliku setuser.php w najnowszej wersji PHP-Fusion, ale bez skutku ;/
Edytowane przez Drecha dnia 25.08.2011 12:02:42
|
|
|
|
Detektyw Monk |
Dodany dnia 25.08.2011 12:45:32
|
Przedszkolak
Postów: 52 Pomógł: 4 Ostrzeżeń: 1
v7.02.03 Data rejestracji: 04.06.2011 15:43
|
Problem nie tkwi w samym setuser.php, ale także w maincore.php.
Linijka z PHP-Fusion v7.00.05
if (isset($_POST['login']) && isset($_POST['user_name']) && isset($_POST['user_pass'])) {
$user_name = preg_replace(array("/\=/","/\#/","/\sOR\s/"), "", stripinput($_POST['user_name']));
$user_pass = md5($_POST['user_pass']);
$result = dbquery("SELECT * FROM ".DB_USERS." WHERE user_name='".$user_name."' AND user_password='".md5($user_pass)."' LIMIT 1");
if (dbrows($result)) {
$data = dbarray($result);
$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(COOKIE_PREFIX."user", $cookie_value, $cookie_exp, "/", "", "0");
redirect(BASEDIR."setuser.php?user=".$data['user_name'], true);
} elseif ($data['user_status'] == 1) {
redirect(BASEDIR."setuser.php?error=1", true);
}
} else {
redirect(BASEDIR."setuser.php?error=3");
}
}
Linijka z PHP-Fusion v7.02.03
if (isset($_POST['login']) && isset($_POST['user_name']) && isset($_POST['user_pass'])) {
$auth = new Authenticate($_POST['user_name'], $_POST['user_pass'], (isset($_POST['remember_me']) ? true : false));
$userdata = $auth->getUserData();
unset($auth, $_POST['user_name'], $_POST['user_pass']);
} elseif (isset($_GET['logout']) && $_GET['logout'] == "yes") {
$userdata = Authenticate::logOut();
redirect(BASEDIR."index.php");
} else {
$userdata = Authenticate::validateAuthUser();
}
|
|
|
|
nmpministranci |
Dodany dnia 26.08.2011 07:35:08
|
Początkujący
Postów: 135 Pomógł: 1 Ostrzeżeń: 3
Data rejestracji: 18.11.2007 08:08
|
No właśnie dokładnie. Tam także tkwi problem. Podmieniałem tam kod wielokrotnie. Niestety sukcesów brak. Czy ktoś z Kolegów i Koleżanek wie może jak pogodzić te kody ze sobą (znaczy starsze wersje z najnowszymi edycjami PHP-Fusion)?
Pozdrawiam i dziękuję.
Edytowane przez Drecha dnia 26.08.2011 11:54:03
Born to be Wild.
|
|
|
|
jozio_94 |
Dodany dnia 30.08.2011 23:34:41
|
Przedszkolak
Postów: 84 Pomógł: 7 Ostrzeżeń: 2
Data rejestracji: 15.02.2011 21:39
|
Ma ktoś jakiś pomysł na przywrócenie tego pliku setuser? Bardzo mi na nim zależy. Z góry dziękuję |
|
|
|
kefirek |
Dodany dnia 31.08.2011 22:46:05
|
Zaawansowany
Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
W pliku maincore.php, tam gdzie mamy:
// Log in user
if (isset($_POST['login']) && isset($_POST['user_name']) && isset($_POST['user_pass'])) {
$auth = new Authenticate($_POST['user_name'], $_POST['user_pass'], (isset($_POST['remember_me']) ? true : false));
$userdata = $auth->getUserData();
unset($auth, $_POST['user_name'], $_POST['user_pass']);
} elseif (isset($_GET['logout']) && $_GET['logout'] == "yes") {
$userdata = Authenticate::logOut();
redirect(BASEDIR."index.php");
} else {
$userdata = Authenticate::validateAuthUser();
}
zmieniamy:
redirect(BASEDIR."index.php");
na:
redirect(BASEDIR."setuser.php");
Potem w pliku includes/classes/Authenticate.class.php po linia 69:
Authenticate::setUserCookie($user['user_id'], $user['user_salt'], $user['user_algo'], $remember, true);
$this->_userData = $user;
dodajemy:
redirect(BASEDIR."setuser.php?user=".$user['user_name']);
W lini 303 zmieniamy:
$return = BASEDIR."login.php?error=".$errorId;
na:
$return = BASEDIR."setuser.php?error=".$errorId;
I wrzucamy plik z załącznika do głównego folderu.
kefirek dodał/a następującą plik:
Edytowane przez Pieka dnia 01.09.2011 13:37:38
|
|
|
|
nmpministranci |
Dodany dnia 01.09.2011 06:34:26
|
Początkujący
Postów: 135 Pomógł: 1 Ostrzeżeń: 3
Data rejestracji: 18.11.2007 08:08
|
Tak! Dzięki Ci @kefirek. Nie bez powodu mówią, że jesteś niezastąpiony. Działa wszystko pięknie i ładnie. Bardzo Ci dziękuje. Dałem już zasłużone "pomógł". Pozdrawiam i dziękuje jeszcze raz,
Krzysiek
Połączony z 01 wrzesień 2011 10:43:
Tylko jeszcze jedno pytanie. Otóż gdy loguję się to setuser.php pojawia się poprawnie. Jednak gdy zrobiłem próbę i podałem błędne dane przy logowaniu to nie następuje przekierowanie do wyżej wymienionego pliku, lecz procedura następuje "po staremu". Czy można temu zardzić?
Pozdrawiam.
PW od moderatora:
- Ogólna Uwaga - Pieka 01.09.2011 13:42
Edytowane przez nmpministranci dnia 01.09.2011 10:43:06
Born to be Wild.
|
|
|
|
jozio_94 |
Dodany dnia 01.09.2011 11:05:48
|
Przedszkolak
Postów: 84 Pomógł: 7 Ostrzeżeń: 2
Data rejestracji: 15.02.2011 21:39
|
nmpministranci napisał(a):
Tylko jeszcze jedno pytanie. Otóż gdy loguję się to setuser.php pojawia się poprawnie. Jednak gdy zrobiłem próbę i podałem błędne dane przy logowaniu to nie następuje przekierowanie do wyżej wymienionego pliku, lecz procedura następuje "po staremu". Czy można temu zardzić?
Pozdrawiam.
Dokładnie to samo zauważyłem :/ Nie można tego jakoś poprawić? W ogóle dzięki @kefirek za zainteresowanie i pomoc Pozdrawiam. |
|
|
|
kefirek |
Dodany dnia 01.09.2011 11:11:13
|
Zaawansowany
Postów: 1191 Pomógł: 418 Ostrzeżeń: 1
v6.00.xxx Data rejestracji: 06.04.2008 21:59
|
Tak myślałem ze zapomniałem o czymś.
Trzeba jeszcze w Authenticate.class.php lini 303 zmienic:
$return = BASEDIR."login.php?error=".$errorId;
na:
$return = BASEDIR."setuser.php?error=".$errorId;
Edytowane przez Pieka dnia 01.09.2011 13:39:02
|
|
|
|
nmpministranci |
Dodany dnia 01.09.2011 11:17:18
|
Początkujący
Postów: 135 Pomógł: 1 Ostrzeżeń: 3
Data rejestracji: 18.11.2007 08:08
|
Potwierdzam wszystko działa teraz wyśmienicie . Dla mnie idealnie. Dzięki @kefirek.
Born to be Wild.
|
|
|
|
jozio_94 |
Dodany dnia 01.09.2011 11:19:01
|
Przedszkolak
Postów: 84 Pomógł: 7 Ostrzeżeń: 2
Data rejestracji: 15.02.2011 21:39
|
Dziękuję bardzo! Wszystko działa i dziękuję jeszcze raz :)
Edytowane przez Pieka dnia 01.09.2011 13:40:12
|
|
|