Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MSSQL][PHP]przekierowanie na stronę zależne od hasła pobranego z bazy, Problem do rozwiązania
kbaryk
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2011

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


Witam serdecznie,

Jestem nowym użytkownikiem forum. Potrzebuję wykonać pewną, prostą aczkolwiek skomplikowaną dla osoby nie zajmującej się programowaniem czynność. Ktoś kiedyś stworzył pewną stronkę, która umożliwiała wejście na nią po uwierzytelnieniu. Dane pobierane są z bazy MySQL.

Skrypt ten działa następująco - po podaniu pary: login i hasło nr.1 znajdującego się w bazie, otwiera stronę powitalną "main.php", w przypadku błędnych poświadczeń, skrypt otwiera stronę "zle.php".

Niestety osoba pisząca całą stronę już nie pracuje, w związku z tym strona działa jak widać poniżej.

Docelowo wpisanie loginu i hasła nr.2 z bazy winno otwierać stronę main2.php, analogiczne z main3.php

  1. <?php
  2.  
  3.  
  4. $login=$_POST['login'];
  5. $pass=$_POST['pass'];
  6.  
  7. $zle='<html><head><link rel="stylesheet" type="text/css" href="style.css" /><meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"><title>Klub czytelnika</title><link rel="stylesheet" href="style.css" type="text/css"></head><body bgcolor="black"><form action="send" method="post" target="zle.php"><table height="100" width="900" align="center" frameborder="0" border="0" cellspacing="0" cellpadding="0" valign="top"><tr><td width="900" height="100" align="right" valign="middle" colspan="2"></tr></td><tr><td width="900" height="25" align="right" valign="middle"><p align="center" class="text">Wprowadzono niepoprawny login i hasło.</p><p align="center" class="text">Skontaktuj się z opiekunem.</p></td></tr></table></FORM></body></html>';
  8. $ok='<html><head><link rel="stylesheet" type="text/css" href="style.css" /><meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"><META HTTP-EQUIV="Refresh" CONTENT="3; URL=main.php"><title>Klub czytelnika</title><link rel="stylesheet" href="style.css" type="text/css"></head><body bgcolor="#111111"><table height="620" width="900" align="center" valign="middle" bgcolor="#111111" cellspacing="0" cellpadding="0" border="0" frameborder="0"><tr><td width="900" height="125" align="center" valign="middle" colspan="2" background="img/baner.jpg"></td></tr><tr><td width="900" height="9" align="right" valign="middle" bgcolor="#111111"></td></tr><tr><td width="900" height="477" align="right" valign="middle" bgcolor="#111111"> <table width="900" height="477" align="center" valign="middle" bgcolor="#111111" cellspacing="0" cellpadding="0" border="0" frameborder="0"> <tr> <td width="72" height="467" align="right" valign="middle" bgcolor="#111111"></td> <td width="751" height="467" align="center" valign="middle" bgcolor="#000000"> <p class="welcome">Biblioteka wita wszystkich</p> </td> <td width="10" height="467" align="right" valign="middle" background="img/rightpanel.jpg"></td> <td width="67" height="467" align="right" valign="middle" bgcolor="#111111"></td> </tr> <tr> <td width="72" height="10" align="right" valign="middle" bgcolor="#111111"></td> <td width="751" height="10" align="right" valign="middle" background="img/bottompanel1.jpg"></td> <td width="10" height="10" align="right" valign="middle" background="img/bottompanel2.jpg"></td> <td width="67" height="10" align="right" valign="middle" bgcolor="#111111"></td> </tr> </table></td></tr><tr><td width="900" height="6" align="right" valign="middle" bgcolor="#111111"></td></tr></table></body></html>';
  9.  
  10.  
  11.  
  12.  
  13. $pol=mysql_connect("http://","LOGIN","HASŁO") or die ("Uwaga, polaczenie zawiera bledy!");
  14.  
  15. mysql_select_db("BAZA", $pol);
  16.  
  17.  
  18. $query=("SELECT `user` FROM `users` WHERE `user` = '".$login."' AND `pass` = '".$pass."'");
  19.  
  20. $wynik= mysql_query ($query);
  21. $ile= mysql_numrows($wynik);
  22. if ($ile > 0)
  23. {
  24. echo $ok;
  25. }
  26. else
  27. {
  28. echo $zle;
  29. }
  30.  
  31. ?>


Będę niezmiernie wdzięczny za pomoc.

Krzysztof
Powód edycji: [Daiquiri]: Poprawiam bbcode
Go to the top of the page
+Quote Post
Flame0
post
Post #2





Grupa: Zarejestrowani
Postów: 6
Pomógł: 2
Dołączył: 9.11.2011

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


Wytłumacz w czym masz problem, bo twój post nic nie wnioskuje.
Go to the top of the page
+Quote Post
Daiquiri
post
Post #3





Grupa: Administratorzy
Postów: 1 552
Pomógł: 211
Dołączył: 7.07.2009
Skąd: NJ




A gdzie przechowujesz informacje, które hasło ma jaki numer? (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
kbaryk
post
Post #4





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2011

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


Cytat(Daiquiri @ 10.11.2011, 18:23:54 ) *
A gdzie przechowujesz informacje, które hasło ma jaki numer? (IMG:style_emoticons/default/smile.gif)

Jest to uzależnione od z góry narzuconej numeracji loginów. Mamy ustalone zasady, typu:
loginy zaczynające się od Axxx-Wx2/xx/xx/xx mają hasło "numer1"
loginy zaczynające się od Axxx-Wx3/xx/xx/xx mają hasło "numer2"

planujemy nową numerację od 2012, która jest jeszcze nie ustalona, ale hasło jest już z góry założone.

Dla mnie najistotniejsze jest, by to hasło decydowało o wczytaniu odpowiedniej strony.

Krzyś
Go to the top of the page
+Quote Post
nospor
post
Post #5





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Dla mnie najistotniejsze jest, by to hasło decydowało o wczytaniu odpowiedniej strony.
No to robisz zwykłe warunki i po sprawie
  1. switch ($haslo){
  2. case 'haslo1': $link = 'main1.php';break;
  3. case 'haslo2': $link = 'main2.php';break;
  4. case 'haslo3': $link = 'main3.php';break;
  5. .....
  6. default: $link = 'main1.php';break;
  7. }
  8. header('Location: mojastrona.pl/'.$link);
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post
kbaryk
post
Post #6





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2011

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


Cytat(nospor @ 13.11.2011, 20:10:22 ) *
No to robisz zwykłe warunki i po sprawie
  1. switch ($haslo){
  2. case 'haslo1': $link = 'main1.php';break;
  3. case 'haslo2': $link = 'main2.php';break;
  4. case 'haslo3': $link = 'main3.php';break;
  5. .....
  6. default: $link = 'main1.php';break;
  7. }
  8. header('Location: mojastrona.pl/'.$link);


Rozumiem, ale gdzie mam ten kawałek kodu wstawić ? Wstawiając zamiast
  1. $pass=$_POST['pass'];
nie przynosi rezultatu.

Ten post edytował kbaryk 13.11.2011, 22:51:03
Go to the top of the page
+Quote Post
nospor
post
Post #7





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No masz to wstawić tutaj:
if ($ile > 0)
{
echo $ok;
}
zamiast echo $ok
Go to the top of the page
+Quote Post
kbaryk
post
Post #8





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.11.2011

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


Wpisałem ten kawałek kodu w odpowiednie miejsce i nadal nie ma przekierowania na inną stronę, gdy podam inne hasło.

Kod wpisywany przeze mnie wygląda następująco:
  1. <?php
  2.  
  3.  
  4. $login=$_POST['login'];
  5. $pass=$_POST['pass'];
  6.  
  7. $zle='<html><head><link rel="stylesheet" type="text/css" href="style.css" /><meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"><title>Klub czytelnika</title><link rel="stylesheet" href="style.css" type="text/css"></head><body bgcolor="black"><form action="send" method="post" target="zle.php"><table height="100" width="900" align="center" frameborder="0" border="0" cellspacing="0" cellpadding="0" valign="top"><tr><td width="900" height="100" align="right" valign="middle" colspan="2"></tr></td><tr><td width="900" height="25" align="right" valign="middle"><p align="center" class="text">Wprowadzono niepoprawny login i hasło.</p><p align="center" class="text">Skontaktuj się z opiekunem.</p></td></tr></table></FORM></body></html>';
  8. $ok='<html><head><link rel="stylesheet" type="text/css" href="style.css" /><meta http-equiv="Content-type" content="text/html; charset=iso-8859-2"><META HTTP-EQUIV="Refresh" CONTENT="3; URL=main.php"><title>Klub czytelnika</title><link rel="stylesheet" href="style.css" type="text/css"></head><body bgcolor="#111111"><table height="620" width="900" align="center" valign="middle" bgcolor="#111111" cellspacing="0" cellpadding="0" border="0" frameborder="0"><tr><td width="900" height="125" align="center" valign="middle" colspan="2" background="img/baner.jpg"></td></tr><tr><td width="900" height="9" align="right" valign="middle" bgcolor="#111111"></td></tr><tr><td width="900" height="477" align="right" valign="middle" bgcolor="#111111"> <table width="900" height="477" align="center" valign="middle" bgcolor="#111111" cellspacing="0" cellpadding="0" border="0" frameborder="0"> <tr> <td width="72" height="467" align="right" valign="middle" bgcolor="#111111"></td> <td width="751" height="467" align="center" valign="middle" bgcolor="#000000"> <p class="welcome">Biblioteka wita wszystkich</p> </td> <td width="10" height="467" align="right" valign="middle" background="img/rightpanel.jpg"></td> <td width="67" height="467" align="right" valign="middle" bgcolor="#111111"></td> </tr> <tr> <td width="72" height="10" align="right" valign="middle" bgcolor="#111111"></td> <td width="751" height="10" align="right" valign="middle" background="img/bottompanel1.jpg"></td> <td width="10" height="10" align="right" valign="middle" background="img/bottompanel2.jpg"></td> <td width="67" height="10" align="right" valign="middle" bgcolor="#111111"></td> </tr> </table></td></tr><tr><td width="900" height="6" align="right" valign="middle" bgcolor="#111111"></td></tr></table></body></html>';
  9.  
  10.  
  11.  
  12.  
  13. $pol=mysql_connect("http://","LOGIN","HASŁO") or die ("Uwaga, polaczenie zawiera bledy!");
  14.  
  15. mysql_select_db("BAZA", $pol);
  16.  
  17.  
  18. $query=("SELECT `user` FROM `users` WHERE `user` = '".$login."' AND `pass` = '".$pass."'");
  19.  
  20. $wynik= mysql_query ($query);
  21. $ile= mysql_numrows($wynik);
  22. if ($ile > 0)
  23. {
  24. switch ($haslo){
  25. case 'haslo1': $link = 'main1.php';break;
  26. case 'haslo2': $link = 'main2.php';break;
  27. case 'haslo3': $link = 'main3.php';break;
  28. .....
  29. default: $link = 'main1.php';break;
  30. }
  31. header('Location: mojastrona.pl/'.$link);
  32. }
  33. else
  34. {
  35. echo $zle;
  36. }
  37.  
  38. ?>


Pracuję na programie php designer 7 i lada dzień skończy mi się okres testowy. W każdym razie program krzyczy, że "....." zawiera błędy, a po zalogowaniu się na stronę wyświetlany jest komunikat: "
Parse error: syntax error, unexpected '.' in /home/users/strona/public_html/podstrona/index.php on line 28".

Usunąłem w/w "...." znaki oraz przerobiłem skrypt na:
  1. switch ($haslo){
  2. case 'haslo1': $link = 'main.php';break;
  3. case 'haslo2': $link = 'main2.php';break;
  4. case 'haslo3': $link = 'main3.php';break;
  5.  
  6. default: $link = 'main.php';break;
  7. }
  8. header('Location: '.$link);
Teraz można zalogować się na stronę z hasłem numer 1 tak, jak uprzednio, natomiast hasło numer 2 działa analogicznie jak numer 1, nie otwiera linku "main2.php".
Czy może to być związane z faktem, że ten skrypt bierze jedynie pod uwagę linijkę "default: $link = 'main.php';break;" (IMG:style_emoticons/default/questionmark.gif)

Czy może jest to spowodowane, że w bazie są jedynie trzy kolumny: "id", "user" oraz "pass" (IMG:style_emoticons/default/questionmark.gif) W każdym razie chciałbym, by skrypt sprawdzał, czy w bazie w komórce "pass" jest hasło numer 1 bądź hasło numer 2 i przekierowywał na odpowiednią stronę.

Ten post edytował kbaryk 23.11.2011, 09:14:40
Go to the top of the page
+Quote Post
redelek
post
Post #9





Grupa: Zarejestrowani
Postów: 658
Pomógł: 37
Dołączył: 4.06.2005
Skąd: Wawa

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


Hej,

Moim zdaniem przy takim kodzie otwiera Ci się cały czas main.php.
Nie masz nigdzie w kodzie zmiennej $haslo , więc ta zmienna jest pusta i otwiera zawsze opcje default main.php.
Ty masz zmienną $pass, więc zmień to na taki kod

  1. switch ($pass){
  2. case 'haslo1': $link = 'main.php';break;
  3. case 'haslo2': $link = 'main2.php';break;
  4. case 'haslo3': $link = 'main3.php';break;
  5.  
  6. default: $link = 'main.php';break;
  7. }
  8. header('Location: '.$link);


Poza tym dosyć ciekawe jest to zapytanie

  1. $query=("SELECT `user` FROM `users` WHERE `user` = '".$login."' AND `pass` = '".$pass."'");


Pobierasz tylko pole USER z tabeli USERS, a sprawdzasz jeszcze pole pass o tu WHERE `user` = '".$login."' AND `pass` = '".$pass."'"), a pola pass nie pobierasz
Ja bym to zapytanie przerobił na takie
  1. $query=("SELECT `user`,`pass` FROM `users` WHERE `user` = '".$login."' AND `pass` = '".$pass."'");
i wtedy to ma sens lub SELECT * wszystkie pola z tabeli

Oczywiście PHP to moje hobby, a nie praca i chlebek więc mogę się mylić (IMG:style_emoticons/default/smile.gif) )

Ten post edytował redelek 23.11.2011, 10:07:51
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 2.10.2025 - 19:05