![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z logowaniem do mojego serwisu, które to nagle z niewiadomych przyczyn przestało działać. Skrypt logowania jest standardowy, mniej więcej taki jak opisywany tu: http://www.egrafik.pl/phpmysql-prosty-syst...owania,880.html Po wpisaniu loginu i hasła nic się nie dzieje, nie przekierowuje mnie na stronę docelową. W bazie widzę także, że logowanie udało się (odpowiednie pole zmienia się z 0 na 1) niemniej jednak nie przekierowuje na stronę docelową. Serwis stoi na hostingu nazwa.pl. Podejrzewam, że dokonano jakichś zmian na serwerze i w ich wyniku mam problem j.w. Niestety admini nazwa.pl zaprzeczają by coś się zmieniło. Gdy zgłosiłam im problem sugerowali by dodać do .htaccess linię php_flag register_globals 1. Dodałam, nie pomogło. Logowanie działało zawsze bezproblemowo. Problem występuje od kilku dni. Żadne pliki nie były modyfikowane, nie było żadnej ingerencji z mojej strony. Prośba o sugestie - co należy zmienić/zmodyfikować by przywrócić możliwość logowania ? Pozdrawiam, Kasia |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 575 Pomógł: 299 Dołączył: 26.03.2009 Ostrzeżenie: (20%) ![]() ![]() |
Pokaż kod.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Skrypt wygląda tak:
<?php session_start(); require_once("mysql.php"); if($_GET['akcja']=="loguj") { $login=$_POST['login']; $haslo=$_POST['passwd']; $query="SELECT *,PASSWORD('$haslo') AS haslo FROM admins WHERE login='$login' LIMIT 1"; if($result=$GLOBALS['mysql']->query($query)) { $row=$result->fetch_assoc(); //echo $row['passwd']." ".$row['haslo']; if($result->num_rows>0&&$row['haslo']===$row['passwd']) { $result->free(); $_SESSION['l']=$login; $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key_hex = '8764782h3826732hei2h7832y763'; $key_bin = pack('H*', $key_hex); $_SESSION['p'] = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key_bin, $haslo, MCRYPT_MODE_ECB, $iv); $REMOTE_ADDR=getenv("REMOTE_ADDR"); $query="update admins set czas=UNIX_TIMESTAMP(),logged=1,ip='{$REMOTE_ADDR}' where login='{$row['login']}' LIMIT 1;"; $GLOBALS['mysql']->multi_query($query); header("Location: panel.php"); $komunikat="<a href=\"panel.php\">dalej</a>"; } else { session_destroy(); $komunikat="<div class=login_error>Nieprawidłowy login lub hasło</div>"; } } else { } } else if($_GET['akcja']=="logout") { $iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB); $iv = mcrypt_create_iv($iv_size, MCRYPT_RAND); $key_hex = '8764782h3826732hei2h7832y763'; $key_bin = pack('H*', $key_hex); $pas = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key_bin, $_SESSION['p'], MCRYPT_MODE_ECB, $iv); $query="select *,PASSWORD('{$pas}') as haslo from admins where login='{$_SESSION['l']}' LIMIT 1"; $result=$GLOBALS['mysql']->query($query); if($result) { $row=$result->fetch_assoc(); if($row['passwd']==$row['haslo']) { $query="update admins set czas=0,logged=0,ip='0.0.0.0' where login='{$row['login']}'"; $mysql->query($query); } session_destroy(); $komunikat="<div class=login_logout>Zostałeś wylogowany z panelu</div>"; $result->free(); } } $string = file_get_contents("grafika/index.html"); $string=str_replace("%komunikat",$komunikat,$string); echo $string; ?> Kasia |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
Daj sobie przed tym wszystkim 'error_reporting(E_ALL);' i zobacz czy nie ma jakiegoś błędu. Bo biała strona może właśnie to oznaczać (IMG:style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Po wpisaniu powyższej komendy mam komunikaty jak niżej:
Notice: Undefined index: akcja in /[...]/panel/index.php on line 9 Notice: Undefined index: akcja in /[...]/panel/index.php on line 54 Notice: Undefined variable: komunikat in /[...]/panel/index.php on line 79 Ekspertem w php nie jestem lecz chyba wygląda na to iż są to jakieś zmienne lokalne. Administratorzy serwera pytali czy deklaracje zmiennych są globalne, niestety odpowiedzi nie umiałam udzielić. Prawdopodobnie na serwerze zaszła jakaś zmiana, że trzeba używać zmiennych globalnych. Prośba o pomoc - jak to przywrócić do normalnego działania ? Pozdrawiam, Kasia Ten post edytował KatarzynaB 22.08.2009, 12:35:58 |
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Ekspertem w php nie jestem lecz chyba wygląda na to iż są to jakieś zmienne lokalne. Nie, sęk w tym, że zmienne sprawdzasz, kiedy ich nie ma - wywołujesz skrypt bez parametru akcja w URL; dodaj sprawdzanie, czy pusty. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zmienne są sprawdzane po naciśnięciu przycisku loguj.
I po jego naciśnięciu nie przechodzę na stronę docelową a ponownie wyświetla się strona logowania i komunikat błędu: Warning: Cannot modify header information - headers already sent by (output started at /[...]/panel/index.php:5) in /[...]/panel/index.php on line 39 Pozdrawiam, Kasia |
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Warning: Cannot modify header information - headers already sent by (output started at /[...]/panel/index.php:5) in /[...]/panel/index.php on line 39 Było setki razy, poszukaj! |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zastosowałam się do rad, które znalazłam.
Czyli ob_start();, ob_flush(); plik zapisywany jako UTF-8 NO BOM. Nic nie ma przed początkowym <?php. Problem jest nadal i jest taki sam. Chętnie bym poprosiła o pomoc za opłatą. Jestem w php zbyt wielkim laikiem żeby sobie z tym poradzić. Czy może tu na forum znajdę osobę, która poprawi skrypt ? Twórca niestety jest nieosiągalny. Działało kilka miesięcy, nagle przestało działać. (IMG:style_emoticons/default/sad.gif) Pozdrawiam, Kasia |
|
|
![]()
Post
#10
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
W formularzu logowania dodaj parametr '...&action=login...' powinno to mniej więcej wyglądać tak:
Jak to zrobisz to powinno być ok, przynajmniej te błędy które Ci się teraz wyświetlają powinny zniknąć, nie twierdze jednak, że nie pojawią się nowe (IMG:style_emoticons/default/winksmiley.jpg) |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Mam tak:
<form name="login_form" method="post" action="index.php?akcja=loguj"> Czyli prawie OK. Gdy zmienię index.php?akcja=loguj na index.php&akcja=loguj zgodnie z powyższym to pojawia się informacja, że nie ma takiej strony na serwerze.. Pozdrawiam, Kasia |
|
|
![]()
Post
#12
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 72 Dołączył: 15.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
No tak bo jeśli jest to pierwszy parametr na liście to powinno być '?akcja=loguj' każdy kolejny zaczyna się od & czyli '?akcja=loguj&zmienna2=costam&zmienna3=costam'. No to teoretycznie masz dobrze (IMG:style_emoticons/default/smile.gif)
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 6.07.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zauważyłam, że gdy ob_start(); umieszczę przed session start to komunikat Cannot add/modify header information - headers already sent by... sie nie pojawia. Pojawia się wtedy:
Notice: A session had already been started - ignoring session_start() in /home/dodziak/ftp/sportinfo24h.pl/panel/index.php on line 6 Notice: Undefined index: akcja in /[...]/panel/index.php on line 12 Notice: Undefined index: akcja in /[...]/panel/index.php on line 56 Notice: Undefined variable: komunikat in /[...]/panel/index.php on line 81 co w moim rozumieniu oznacza, że nie przekazano parametrów do skryptu. Gdy ob_start(); umieszczę po session start to mam komunikat Cannot add/modify header information - headers already sent by... Nic więcej w tym temacie nie znalazłam na forum. Co jeszcze można zmienić/sprawdzić ? Pozdrawiam, Kasia |
|
|
![]()
Post
#14
|
|
Grupa: Zarejestrowani Postów: 24 Pomógł: 0 Dołączył: 4.09.2003 Skąd: z Gdyni Ostrzeżenie: (0%) ![]() ![]() |
co w moim rozumieniu oznacza, że nie przekazano parametrów do skryptu. Gdy ob_start(); umieszczę po session start to mam komunikat Cannot add/modify header information - headers already sent by... Nie do końca to tak wygląda.. Wysyłasz headery do przeglądarki już poleceniem session_start() o ile się nie mylę, a potem chcesz je wysłać ponownie poleceniem header("Location:xxx"); Ta druga funkcja zaczyna ładować inną stronę (i tą opuszcza), więc albo usuń tą linię i każ użytkownikowi samemu się tam przenieść za pomocą linka, albo zaincluduj =p stronę panel.php (o ile konstrukcja strony na to pozwala). Swoją drogą linia "$komunikat="<a href=\"panel.php\">dalej</a>; " już się nie wykona =p To tak ode mnie.. i jeszcze jedno - paskudne formatowanie kodu =p |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 07:28 |