Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Cos nie tak ze skryptem logowania
Forum PHP.pl > Forum > Przedszkole
paffcio87
Witam chciałbym się Was poradzić w jednej sprawie. Szukałem podobnego tematu na forum ale nie znalazłem nic żadnego, który opisywałby mój problem, znalazłem jedynie taki, gdzie problemem było to, że użytkownika logowało bez względu na to co wpisał do formularza rejestracyjnego, ale u mnie to chyba jest coś innego. Więc do rzeczy:
Otóż mam taki oto kod formularza logowania:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
  2. <HTML>
  3. <HEAD>
  4. <META NAME="generator" CONTENT="HTML Tidy for Windows (vers 14 sierpien 2002), see www.w3.org">
  5. <META HTTP-EQUIV="Content Type" CONTENT="text/html;charset=iso-8859-2">
  6.  <TITLE>
  7. Logowanie
  8. </TITLE>
  9. <LINK REL="stylesheet" HREF="Style.css" TYPE="text/css">
  10.  
  11. <TABLE>
  12. <TR>
  13.  <TD>
  14.  <?php
  15. include("./menu.inc");
  16.  ?>
  17.  </TD>
  18.  <TD>
  19.  <form action="login.php" method="POST">
  20. <LEGEND>
  21.  <H2>
  22.  Podaj dane swojego konta:</H2>
  23. </LEGEND>
  24.  <p>Nazwa użytkownika: <input type= "text" name= "login" size="15" maxlengh= "10"></p>
  25.  <p>Hasło: <input type= "password" name= "haslo" size= "25" maxlength= "20"></p>
  26.  <div align="left"><input type= "submit" name= "submit" value="Zaloguj!">
  27.  </TD>
  28. </TR>
  29. </TABLE>
  30. </BODY>
  31. </HTML>

oraz taki skrypt logowania:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
  2. <HTML>
  3. <HEAD>
  4. <META NAME="generator" CONTENT="HTML Tidy for Windows (vers 14 sierpien 2002), see www.w3.org">
  5. <META HTTP-EQUIV="Content Type" CONTENT="text/html;charset=iso-8859-2">
  6.  <TITLE>
  7. Witam
  8. </TITLE>
  9. <LINK REL="stylesheet" HREF="Style.css" TYPE="text/css">
  10. <?php
  11.  
  12. if(isset($_POST['submit'])) {
  13. $message= NULL;
  14.  if(empty($_POST['login'])) {
  15.  $login= FALSE;
  16.  $message .= '<p><font color= "#FF0000">Podaj login!!</font></p>';
  17.  } else {
  18.  $login= $_POST['l'];
  19.  }
  20.  if(empty($_POST['haslo'])){
  21.  $haslo= FALSE;
  22.  $message .= '<p><font color= "#FF0000">Podaj haslo!!</font></p>';
  23.  } else {
  24.  $haslo= $_POST['haslo'];
  25.  }
  26.  if($login && $haslo) {
  27.  $connection= @mysql_connect('localhost', 'Pawel', 'test');
  28.  @mysql_select_db('klasowa', $connection);
  29.  $query= "SELECT count(*) FROM userzy WHERE login= '$login' AND haslo= '$haslo'";
  30.  $result= @mysql_query ($query);
  31.  if (login== $l && haslo== $haslo ) {
  32.  $message .="Zostales zalogowany";
  33. $row= mysql_fetch_array($result, MYSQL_NUM);
  34.  
  35. setcookie('imie', $row[1]);
  36. setcookie ('nazwisko', $row[2]);
  37. header ("location: witaj.php");
  38.  
  39. mysql_close($connection);
  40. exit();
  41. } else{
  42. $message .='<p><font color= "#FF0000">Twój login i hasło nie zgadzają się z danymi wprowadzonymi podczas rejestracji!!</font></p>';
  43. }
  44.  } else {
  45.  $message .='<p><font color= "#FF0000">Musisz podać swoje dane, aby się zalogować</font></p>';
  46. }
  47. } else {
  48. if (isset($message)) {
  49. echo "$message";
  50. }
  51. }
  52. ?>
  53. </body>
  54. </html>

Otóż mój problem polega, na tym, że gdy wcisnę przycisk "Wyślij" niby wszystko ok i przekierowuje mnie na stronę"Witaj", ale jest ona pusta tzn. nie wyświetlają się na niej żadne komunikaty typu "Podaj swoje hasło" itp. Nie jestem bardzo zaawansowanym skrypciarzem, a taki skrypt, który loguje użytkowników w ogóle piszę pierwszy raz dlatego liczę na Wasz a pomoc :-)
Do Administracji

Proszę o niezamykanie tematu, ale o ewentualną jego poprawę jeśli coś jest nie tak..Męczę się nad tym skryptem już kilka dni i nic nie mogę wykombinować sadsmiley02.gif . Byłbym wdzięczny.
John
Zastanawiają mnie te spacje w formularzu po atrybucie name. Pozbądź się ich i spróbuj jeszcze raz. Aha a na przyszłość proponuję Ci dodawać takie rzeczy jak zrzuty danych wtedy widzisz czy one w ogóle są ;-)

Inaczej mówiąc zrzuć sobie np:
  1. <?php
  2. print_r($_POST);
  3. ?>


w pliku login.php no i w witaj.php. Zobacz co Ci wyjdzie jak się wszystko zgadza to szukamy dalej ;-)
plurr
  1. <?php
  2. $login= $_POST['l'];
  3. ?>


a to do czego sluzy ? W formularzu nie masz takiego atrybutu.
paffcio87
Niestety żadene z tych porad nie pomogło :-(. Jeżeli chodzi o post John'a to wywala mi błąd, że jest niezdefiniowana funkcja. Plurr napisał natomiast, że nie wie do czego sluży to:
  1. <?php
  2. $login= $_POST['l'];
  3. ?>

No więc chodzilo mi o to żeby przypisać to co wpisze użykownik do pola "login" do tablicy $_POST['l'], żeby później było prościej napisać zapytanie do sql'a, zmieniłem to ale też nie działa :-/ A jeśli chodzi o odstpy w atrybutach w formularzu robie je już odruchowo, ale to w niczym nie przeszkadza w rejestracji zrobiłem tak samo i jest wszystko ok. Dzięki za porady, ale niestety jak już mówiłem żadna z nich nie okazała się skuteczna. Już nie wiem co jest źle w tym skrypcie worriedsmiley.gif
Grzyw
Cytat(John @ 28.02.2008, 03:54:29 ) *
Zastanawiają mnie te spacje w formularzu po atrybucie name. Pozbądź się ich i spróbuj jeszcze raz. Aha a na przyszłość proponuję Ci dodawać takie rzeczy jak zrzuty danych wtedy widzisz czy one w ogóle są ;-)

Inaczej mówiąc zrzuć sobie np:
  1. <?php
  2. print_r($_POST);
  3. ?>


w pliku login.php no i w witaj.php. Zobacz co Ci wyjdzie jak się wszystko zgadza to szukamy dalej ;-)


John na ma rację, wrzuć print_r($_POST); w linijkę nr 11. I daj znać, co Ci wywali w skrypcie.
paffcio87
Ok dodałem tą linijkę w kodzie i po wpisaniu prawidłowego hasła i loginu wyskoczyło mi takie coś:
Kod
Array  (      [login] => pawel      [haslo] => test      [submit] => Zaloguj!  )

Chodziło o coś takiego? :-)
krzysiekk
witam mam pytanie co to robi ?
  1. <?php
  2. if($login && $haslo)
  3. ?>
Grzyw
Cytat(paffcio87 @ 28.02.2008, 23:35:29 ) *
Ok dodałem tą linijkę w kodzie i po wpisaniu prawidłowego hasła i loginu wyskoczyło mi takie coś:
Kod
Array  (      [login] => pawel      [haslo] => test      [submit] => Zaloguj!  )

Chodziło o coś takiego? :-)


Dokładnie o to. Czyli dane z formularza idą prawidłowo do skryptu.
Tym razem Plurr ma rację. Zamień
  1. <?php
  2. $login= $_POST['l'];
  3. ?>


na:
  1. <?php
  2. $login= $_POST['login'];
  3. ?>


bo masz w formularzu pole o nazwie login, a nie l.
paffcio87
Chodziło mi o to, żeby sprawdzić czy pola formularza zostały wypełnione jeśli tak to łączę sie z bazą i sprawdzam czy dane wprowadzone do formularza zgadzają sie z tymi w bazie. Przynajmniej takie było moje założenie, ale jak już mówiłem taki skrypt pisałem pierwszy raz więc na pewno coś sknociłem i nie wiem co..., a jeśli chodzi o to $login i $l już to pozmieniałem- wszędzie gdzie było $l zamieniłem na $login i dalej lipa. Może pokazać skrypt rejestracji?
krzysiekk
cyt" Chodziło mi o to, żeby sprawdzić czy pola formularza zostały wypełnione"

ale to robisz juz tu
  1. <?php
  2. if(empty($_POST['login']))
  3. ?>


i wlasciwie po tym sprawdzeniu lub sprawdzeniu hasla powinienes przerwac petle if i dac komunikat ze sa puste ,
a jesli sa wypelnione to nawizac polaczenia z baza
erugio
Chyba chodzi ci o jakiś prosty skrypt do logowania, ja najczęściej używam takiego, jest prosty, ale funkcjonalny i w miarę bezpieczny.

Kod
<?php

if($login = $_POST[login]) //jeśli pole login zostanie wypełnione
{
$haslo = md5($_POST[haslo]); //tutaj, jeśli hasło w bazie szyfrujesz md5
$zapytanie = "SELECT pass FROM tabela WHERE id='$login' "; zapytanie do mysql
$wykonaj = mysql_query ($zapytanie); //wykonanie zapytania
$wiersz = mysql_fetch_array($wykonaj); //wyciągnięcie hasła z tabeli do zmiennej

  if($wiersz['pass'] == $haslo) //jeśli hasło z bazy równa się hasłu wprowadzonemu podczas logowania
            {
jeśli wszszytko ok, to to!
            }
else
{
echo "Niepoprawne logowanie";
}
}
else
{
tutaj formularz logowania (login i haslo).

}

?>


Mam nadzieje, że się przyda.
paffcio87
Przerobiłem troszkę ten skrypt i teraz wygląda on następująco:
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN">
  2. <HTML>
  3. <HEAD>
  4. <META NAME="generator" CONTENT="HTML Tidy for Windows (vers 14 sierpien 2002), see www.w3.org">
  5. <META HTTP-EQUIV="Content Type" CONTENT="text/html;charset=iso-8859-2">
  6.  <TITLE>
  7. Logowanie
  8. </TITLE>
  9. <LINK REL="stylesheet" HREF="Style.css" TYPE="text/css">
  10. <BODY>
  11. <?php
  12.  /*print_r($_POST);*/
  13. if(isset($_POST['submit'])) {
  14. $message= NULL;
  15.  if(empty($_POST['login'])) {
  16.  $login= FALSE;
  17.  $message .= '<p><b><font color= "#FF0000">Podaj login!!</font></b></p>';
  18.  } else {
  19.  $login= $_POST['login'];
  20.  }
  21.  if(empty($_POST['haslo'])){
  22.  $haslo= FALSE;
  23.  $message .= '<p><b><font color= "#FF0000">Podaj hasło!!</font></b></p>';
  24. } else {
  25.  $haslo= $_POST['haslo'];
  26.  }
  27.  if($login && $haslo) {
  28.  $connection= @mysql_connect('localhost', 'Pawel', 'test');
  29.  @mysql_select_db('klasowa', $connection);
  30.  $query= "SELECT * FROM userzy WHERE login= '$login' AND haslo= '$haslo'";
  31.  $result= @mysql_query ($query);
  32.  echo mysql_error(); }
  33.  if ($_POST['login']== login && $_POST['haslo']== haslo ) {
  34.  
  35. $row= mysql_fetch_array($result, MYSQL_NUM);
  36.  
  37.  setcookie('imie', $row[1]);
  38. setcookie ('nazwisko', $row[2]);
  39.  header ("location: witaj.php");
  40.  mysql_close($connection);
  41.  
  42.  exit();
  43.  $message .="Zostales zalogowany";
  44. } else {
  45. $message .='<p><b><font color= "#FF0000">Twój login i hasło nie zgadzają się z danymi wprowadzonymi podczas rejestracji!!</font></b></p>';
  46.  }
  47. } else {
  48.  $message .='<p><b><font color= "#FF0000">Musisz podać swoje dane, aby się zalogować</font></b</p>';
  49.  
  50. }
  51. if (isset($message)) {
  52. echo "$message";
  53. }
  54. ?>
  55. </body>
  56. </html>

I teraz wyświetla mi komunikaty z tym, że tak:
- Komunikaty "podaj swój login"; "podaj swoje hasło" Wyswietla mi poprawnie (Jak pola są uzupełnione to komunikatów nie ma itd.);
- Komunikatu "Jestes zalogowany" Nie wyświetla mi wcale, bez wzgledu na to czy podam prawdziwe dane do logowania czy nie, czy nie podam ich wcale;
- Kmunikat "Twój login i hasło nie zgadzają się z danymi wprowadzonymi podczas rejestracji!" Wyświetla mi bez względu na to co podam w formualrzu;
- Komunikat "Musisz podać swoje dane, aby się zalogować" Też się mnie pokazuje wcale;
- I wydaj mi się, że wcale mnie nie loguje bo powinno przekierować mnie na stronę "witaj.php", a tak się nie dzieję .
Podejrzewam , że jest coś nie tak z intrukcją warunkową tylko nie wiem co dlatego proszę jeszcze o troszkę cierpliwości do mnie. Z góry sdziękuję za okazaną pomoc snitch.gif .
Dodam jeszcze tylko, że zależy mi na zrobieniu tej stronki bo dzięki niej mogę zaliczyć informatykę na studiach :-). Dlatego chce żeby wszystklo było dobrze a Wasze forum już nie raz okazało się być mi pomocne winksmiley.jpg
marcio
Co to w ogole za warunki??
  1. <?php
  2. if(isset($_POST['submit'])) {
  3. $message= NULL;
  4.  if(empty($_POST['login'])) {
  5.  $login= FALSE;
  6.  $message .= '<p><b><font color= "#FF0000">Podaj login!!</font></b></p>';
  7.  } else {
  8.  $login= $_POST['login'];
  9.  }
  10.  if(empty($_POST['haslo'])){
  11.  $haslo= FALSE;
  12.  $message .= '<p><b><font color= "#FF0000">Podaj hasło!!</font></b></p>';
  13. } else {
  14.  $haslo= $_POST['haslo'];
  15.  }
  16.  if($login && $haslo) {
  17. //etc......
  18. ?>


Lol ustaw dobrze warunki i reszte to zobaczysz ze bedzie dzialac
paffcio87
No więc właśnie chodzi o to, że nie wiem co zrobiłem źle z tymi warunkami cały czas się nad tym męczę i już mnie ro zaczyna wkur...rzać sciana.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.