Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][phpmyadmin] Błąd logowania wyłącznie na serwerze home.pl oraz domyślne null
klaudiuszozo
post 20.02.2010, 01:19:36
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.02.2010

Ostrzeżenie: (0%)
-----


Witam, przeszukałem googla, forum też i nie znalazłem odpowiedzi. Mam skrypt php który powinien mnie przepuszczać do index.php . Na serwerze OVH.pl wszystko działa jak należy, jedynie na home.pl są problemy. Wstawiam kody z headera index.php oraz auth.php. Proszę o pomoc co robić. Gdy wpiszę błędne hasło to wyskakuje błąd logowania, gdy wpiszę dobre, to nic się nie dzieje na home.pl .
index.php
  1. <?
  2. session_start(); // Na samej górze zadeklaruj sesję.
  3. if(!session_is_registered("uzytkownik")){ // Sprawdza zmienną sesji.
  4. header("location:auth.php"); // Przekierowanie do index.php
  5. }
  6.  
  7. ?>


auth.php
  1. <?
  2. $log=login;
  3. $pass=haslo;
  4.  
  5.  
  6. $message="";
  7.  
  8.  
  9. if($_POST['login']=='login')
  10. {
  11. $uzytkownik=$_POST['uzytkownik'];
  12. $haslo=$_POST['haslo'];
  13.  
  14. if($uzytkownik==$log && $haslo==$pass){
  15. session_register("uzytkownik");
  16. header("location:index.php");
  17. }
  18. else {
  19. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  20. }
  21. }
  22.  
  23. ?>


Drugim ważnym problemem jest ustawiona domyślna wartość w phpmyadminie na null. Nie da jej się zmienić na not null... Nawet gdy tworze tabelę i daje wartość not null to i tak w oknie pokazuje się null. Druga sprawa. Na ovh nie ma problemu, z zapisywaniem poprzez FCKeditora do bazy danych. tutaj niestety mogę dodawać tekst jedynie poprzez edycję w phpmyadmin. Po klikniętu w zapisz nic się nie dzieje...

Z góry dzięki za pomoc.

Ten post edytował klaudiuszozo 20.02.2010, 01:50:12
Go to the top of the page
+Quote Post
DiH
post 20.02.2010, 03:46:16
Post #2





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


W takim razie nie lepiej pozostać przy OVH?

Proponuję w ciemno:
Zmienić:
  1. header("location:auth.php");
na
  1. header("Location: auth.php");

Przed session_start(), nie powinno być żadnego kodu, a więc poniższe przenieś za session_start();
  1. $log=login;
  2. $pass=haslo;


Daj znać czy pomogło.


Go to the top of the page
+Quote Post
klaudiuszozo
post 20.02.2010, 23:03:51
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.02.2010

Ostrzeżenie: (0%)
-----


Niestety nie pomogło. Ja osobiście sam używam OVH, ale firma zarządzająca domeną klienta nie zgadza się na przestawienie serwerów DNS na OVH :/ Teraz okazał się kolejny kwiatek... FCKeditor przy ładowaniu plików pokazuje "Invalid file type"... A nic nie było zmieniane, tylko skopiowane pliki z jednego serwera na drugi...

Słuchajcie, nikt nie ma pomysłu jak to ugryźć?

Ten post edytował klaudiuszozo 20.02.2010, 10:47:21
Go to the top of the page
+Quote Post
mls
post 21.02.2010, 12:54:11
Post #4





Grupa: Zarejestrowani
Postów: 677
Pomógł: 89
Dołączył: 31.08.2003
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Cytat(DiH)
Przed session_start(), nie powinno być żadnego kodu, a więc poniższe przenieś za session_start();


A to niby dlaczego? Ja rozumiem, że to jest dział "Przedszkole", ale niech chociaż w odpowiedziach będzie trzymany poziom ponadprzedszkolny...

Cytat(klaudiuszozo)
Słuchajcie, nikt nie ma pomysłu jak to ugryźć?


Po pierwsze, włącz raportowanie błędów w skrypcie. Wtedy od razu będziesz wiedział co jest nie tak. Po drugie, nie radzę korzystać z session_register, session_unregister i session_is_registered jako, że funkcje te są oznaczone jako przestarzałe i nie będą dostępne w kolejnych wersjach PHP. Od tego jest superglobalna zmienna $_SESSION.


--------------------
Go to the top of the page
+Quote Post
lessi
post 21.02.2010, 13:23:48
Post #5





Grupa: Zarejestrowani
Postów: 89
Pomógł: 12
Dołączył: 1.12.2009

Ostrzeżenie: (0%)
-----


Cytat(mls @ 21.02.2010, 12:54:11 ) *
Po pierwsze, włącz raportowanie błędów w skrypcie. Wtedy od razu będziesz wiedział co jest nie tak. Po drugie, nie radzę korzystać z session_register, session_unregister i session_is_registered jako, że funkcje te są oznaczone jako przestarzałe i nie będą dostępne w kolejnych wersjach PHP. Od tego jest superglobalna zmienna $_SESSION.

Niektóre serwery nawet mają wyłączone stare funkcje więc może w tym tkwi problem
Go to the top of the page
+Quote Post
klaudiuszozo
post 21.02.2010, 18:04:15
Post #6





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.02.2010

Ostrzeżenie: (0%)
-----


Cytat(mls @ 21.02.2010, 12:54:11 ) *
A to niby dlaczego? Ja rozumiem, że to jest dział "Przedszkole", ale niech chociaż w odpowiedziach będzie trzymany poziom ponadprzedszkolny...



Po pierwsze, włącz raportowanie błędów w skrypcie. Wtedy od razu będziesz wiedział co jest nie tak. Po drugie, nie radzę korzystać z session_register, session_unregister i session_is_registered jako, że funkcje te są oznaczone jako przestarzałe i nie będą dostępne w kolejnych wersjach PHP. Od tego jest superglobalna zmienna $_SESSION.

Kolego mógłbyś trochę jaśniej?
Go to the top of the page
+Quote Post
lessi
post 21.02.2010, 20:30:04
Post #7





Grupa: Zarejestrowani
Postów: 89
Pomógł: 12
Dołączył: 1.12.2009

Ostrzeżenie: (0%)
-----


Cytat(DiH @ 20.02.2010, 03:46:16 ) *
Przed session_start(), nie powinno być żadnego kodu, a więc poniższe przenieś za session_start();

Niekoniecznie. Nie powinno być kodu który wyprowadza coś do przeglądarki, bo ciastko wtedy nie może zostać wysłane. Sam najpierw wczytuje moje biblioteki z funkcjami jak to zazwyczaj jest w programowaniu, a dopiero potem połączenie z bazą danych i session_start(). Więc definicja zmiennej jest dozwolona, ale niedozwolona jest np. wyrzucenie zmiennej na ekran.

Klaudiuszozo, mls chodzi o to że niektóre funkcje są już stare i powolne dlatego niektóre serwery je blokują. Zamiast
  1. if(!session_is_registered("uzytkownik"))

użyj
  1. if(empty($_SESSION("uzytkownik"))) lub if(!isset($_SESSION("uzytkownik")))

I powinno być dobrze.
Jednakże spotkałem się także z taką wersją że wtedy także nie działa. Ale jeżeli zmodyfikujesz odpowiednio skrypt logowania że niezalogowany to
  1. $_SESSION("uzytkownik")=0

a zalogowany
  1. $_SESSION("uzytkownik")=1

czyli zamiast
  1. session_register("uzytkownik")
piszesz
  1. $_SESSION("uzytkownik")=1

to na pewno powinno zadziałać. Jak dla mnie ta metoda z 0 i 1 jest łatwiejsza

Pytanie
1. Dlaczego chcesz wyświetlić mysql_error() skoro nie masz połączenia z bazą danych?

Ten post edytował lessi 21.02.2010, 20:46:04
Go to the top of the page
+Quote Post
klaudiuszozo
post 21.02.2010, 22:40:44
Post #8





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.02.2010

Ostrzeżenie: (0%)
-----


lessi, niestety nie działa. Efekt zmian można zauważyć pod adresem: http://patrimex.pl/admin/ ...
P.S. Zacząłem panikować i zacząłem wrzucać już wszystkie skrypt do sprawdzania błędów... winksmiley.jpg
Go to the top of the page
+Quote Post
lessi
post 22.02.2010, 10:07:38
Post #9





Grupa: Zarejestrowani
Postów: 89
Pomógł: 12
Dołączył: 1.12.2009

Ostrzeżenie: (0%)
-----


Cytat(klaudiuszozo @ 21.02.2010, 22:40:44 ) *
lessi, niestety nie działa. Efekt zmian można zauważyć pod adresem: http://patrimex.pl/admin/ ...
P.S. Zacząłem panikować i zacząłem wrzucać już wszystkie skrypt do sprawdzania błędów... winksmiley.jpg

Nie ma co panikować. Wypróbuj tak
index.php
  1. <?php
  2.  
  3. if($_GET["wyloguj"]=="tak")
  4. {
  5. unset($_SESSION['zalogowany']);
  6. unset($_SESSION['login']); // chociaż też już jest stare
  7. // może wystarczy samo $_SESSION['zalogowany']=0;
  8. }
  9.  
  10. if(empty($_SESSION["zalogowany"]))
  11. {
  12. $_SESSION["zalogowany"]=0;
  13. }
  14. if ($_SESSION["zalogowany"]==0)
  15. {
  16. header("location:auth.php");
  17. }
  18. elseif ($_SESSION["zalogowany"]==1)//pokaż stronę dla zalogowanych
  19. {
  20. echo $_GET['message'] .'<br>';
  21. $login=$_SESSION['login'];
  22. echo 'witaj '. $login .'<br><a href="index.php?wyloguj=tak">wyloguj</a>';
  23. }
  24. ?>


auth.php
  1. <?php
  2. $log="login";
  3. $pass="haslo";
  4.  
  5.  
  6. if(!empty($_POST['uzytkownik']))
  7. {
  8. $uzytkownik=$_POST['uzytkownik'];
  9. $haslo=$_POST['haslo'];
  10.  
  11. if($uzytkownik==$log && $haslo==$pass){
  12. $_SESSION["zalogowany"]=1;
  13. $_SESSION["login"]=$uzytkownik;
  14. header("location: index.php?message=Logowanie udane");
  15. }
  16. else {
  17. echo "Nieprawidłowa nazwa użytkownika lub hasło";
  18. }
  19. }
  20. else
  21. {
  22. echo '<form action="auth.php" method="POST">
  23. <input type="text" name="uzytkownik"><br>
  24. <input type="password" name="haslo"><br>
  25. <input type="submit" value="Zaloguj się">
  26. </form>';
  27. }
  28.  
  29.  
  30. ?>

Od tej pory jeżeli chcesz aby coś się wyświetliło dla zalogowanych to wpisujesz
  1. if($_SESSION['zalogowany']==1)
  2. {
  3. //wyświetl treść dla zalogowanych
  4. }


A jeżeli chcesz dla wszystkich to piszesz normalnie bez żadnego warunku. Na na serwerze home działa. I dam ci też radę. Jeżeli nic nie wyskakuje to w twoim przypadku gdzieś warunek musiał być nie spełniony. Wtedy daj przy każdym if`ie do którego chcesz wejść else wtedy sprawdzisz który warunek jest błędny, albo nie dostarczane są do niego zmienne.

Ten post edytował lessi 22.02.2010, 10:20:44
Go to the top of the page
+Quote Post
klaudiuszozo
post 22.02.2010, 23:46:40
Post #10





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 20.02.2010

Ostrzeżenie: (0%)
-----


Lessi działa ale jeśli się wbije link: /admin/auth.php , hmmm... teraz nie działa przekierowanie z /admin/index.php na admin/auth.php...
Go to the top of the page
+Quote Post
DiH
post 22.02.2010, 23:59:41
Post #11





Grupa: Zarejestrowani
Postów: 251
Pomógł: 34
Dołączył: 7.01.2010

Ostrzeżenie: (0%)
-----


Co do
Cytat
Przed session_start(), nie powinno być żadnego kodu, a więc poniższe przenieś za session_start();

Cóż, mój błąd szczegółowy, choć tak nie do końca. Dobrą praktyką jest nieumieszczanie absolutnie żadnego kodu przed session_start(); potencjalnie mogącego wywołać błąd funkcji lub wypisać jakiekolwiek dane, które jeżeli zostaną wypisane przez przeglądarkę, uniemożliwią dalsze poprawne działanie skryptu.

Za manualem:
Cytat
Note: To use cookie-based sessions, session_start() must be called before outputing anything to the browser.


Cytat
ale niech chociaż w odpowiedziach będzie trzymany poziom ponadprzedszkolny...

A ja proszę, niech chociaż poziom dyskusji trzyma poziom powyżej gimnazjalnego dogryzania sobie nawzajem. Zdawało mi się, że jesteśmy tu by pomagać, a nie udowadniać swoją wyższość nad innymi.

Pozdrawiam

Ten post edytował DiH 23.02.2010, 00:02:44
Go to the top of the page
+Quote Post
imashjan82
post 23.02.2010, 01:23:15
Post #12





Grupa: Zarejestrowani
Postów: 71
Pomógł: 2
Dołączył: 2.12.2009

Ostrzeżenie: (0%)
-----


Z tego co wiedzę to tu piszą ludzie z home.pl. W teraz wam wiem czemu nie mam odposziedzi na najwazniesze pytanie? home.pl, nazwa.pl co to jest? blink.pl, tam nie ma zadnych problemów. nazwa i home sie umywa do blinka. kto chce za free miec serwis piszcie na pw. dostaniecie wszystko co wam potrzeba ? polecajacy i-mas. Jesli sie nie sprawdzie. moj e-mail imashajn@imashjan.pl a ja zwracam pieniazki.
Go to the top of the page
+Quote Post
lessi
post 23.02.2010, 07:55:41
Post #13





Grupa: Zarejestrowani
Postów: 89
Pomógł: 12
Dołączył: 1.12.2009

Ostrzeżenie: (0%)
-----


Cytat(klaudiuszozo @ 22.02.2010, 23:46:40 ) *
Lessi działa ale jeśli się wbije link: /admin/auth.php , hmmm... teraz nie działa przekierowanie z /admin/index.php na admin/auth.php...

Pokaż jakie zmiany porobiłeś w tych plikach, bo mi na home.pl działa.
Cytat(DiH @ 22.02.2010, 23:59:41 ) *
Cóż, mój błąd szczegółowy, choć tak nie do końca. Dobrą praktyką jest nieumieszczanie absolutnie żadnego kodu przed session_start(); potencjalnie mogącego wywołać błąd funkcji lub wypisać jakiekolwiek dane, które jeżeli zostaną wypisane przez przeglądarkę, uniemożliwią dalsze poprawne działanie skryptu.

Z tym oczywiście się, czasami można też wyłączyć wyrzucanie błędów stosujac @ ale wtedy nie będziemy wiedzieć że wystąpił błąd.
Cytat(imashjan82 @ 23.02.2010, 01:23:15 ) *
Z tego co wiedzę to tu piszą ludzie z home.pl. W teraz wam wiem czemu nie mam odposziedzi na najwazniesze pytanie? home.pl, nazwa.pl co to jest? blink.pl, tam nie ma zadnych problemów. nazwa i home sie umywa do blinka. kto chce za free miec serwis piszcie na pw. dostaniecie wszystko co wam potrzeba ? polecajacy i-mas. Jesli sie nie sprawdzie. moj e-mail imashajn@imashjan.pl a ja zwracam pieniazki.

To czyżby nie jest reklama?? Ja jakoś nie narzekam na home.pl.

Ten post edytował lessi 23.02.2010, 08:00:24
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2025 - 05:52