Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MSSQL][PHP]przekierowanie na stronę zależne od hasła pobranego z bazy
Forum PHP.pl > Forum > Przedszkole
kbaryk
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
Flame0
Wytłumacz w czym masz problem, bo twój post nic nie wnioskuje.
Daiquiri
A gdzie przechowujesz informacje, które hasło ma jaki numer? smile.gif
kbaryk
Cytat(Daiquiri @ 10.11.2011, 18:23:54 ) *
A gdzie przechowujesz informacje, które hasło ma jaki numer? 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ś
nospor
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);
kbaryk
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.
nospor
No masz to wstawić tutaj:
if ($ile > 0)
{
echo $ok;
}
zamiast echo $ok
kbaryk
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;" questionmark.gif

Czy może jest to spowodowane, że w bazie są jedynie trzy kolumny: "id", "user" oraz "pass" 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ę.
redelek
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ć smile.gif)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.