Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Logowanie nie działa.
Forum PHP.pl > Forum > Przedszkole
marian2299
Napisałem sobie logowanie, u mnie ok.ALe musiałem podłożyć koledze, on wydziwia z kodem strasznie, ale do rzeczy:
  1. <?php include "antet.php"; include "func.php";
  2.  
  3. $gen_stats=gen_stats(48);
  4. ?>
  5.  
  6. <html>
  7. <head>
  8. <title><?php echo $title; ?></title>
  9. <link type="text/css" rel="Stylesheet" href="/css/magia-gra.css" />
  10. <link rel="shortcut icon" href="../images/logo.png" />
  11.  
  12. </script>
  13.  
  14. </head>
  15. <body><br>
  16. <div id='okno'>
  17. <a href='../index.php'><div id='start' class='block'></div></a>
  18. <div id='one' class='block'>
  19. <table>
  20.  
  21.  
  22. <?php
  23. if($_GET['akcja']!="")
  24. {
  25. switch( $_GET['akcja']) {
  26.  
  27. case 'loguj':
  28. include 'logowanie_.php';
  29. break;
  30.  
  31.  
  32. }
  33. }
  34. if ($_SESSION['zalogowany'] == true) {
  35. echo "Zostałeś zalogowany jako: ".$_SESSION['login']."";
  36. }
  37. elseif (isset($_POST['submit'])) {
  38. if($_POST['login'] !="" || $_POST['haslo'] !=""){
  39. $login = mysql_real_escape_string($_POST['login']); //określenie zmiennej login, dodanie backshalsy
  40. $haslo = md5($_POST['haslo']); //określenie zmiennej haslo, kodowanie md5
  41. $zapytanie = "SELECT * FROM `gracze` WHERE login=". $login." and haslo=".$haslo." "; //zapytanie
  42. $uzytkownik = mysql_query($zapytanie) or die("Wystąpił nieoczekiwany błąd."); //wynik zapytania
  43. $uzytkownik = mysql_fetch_array($uzytkownik) or die("Wystąpił nieoczekiwany błąd.");
  44.  
  45. if($uzytkownik['login'] === $login && $uzytkownik['haslo'] === $haslo){
  46.  
  47. $_SESSION['zalogowany'] = true; //określamy zmienną sesyjną zalogowany
  48. $_SESSION['login'] = $uzytkownik['login']; //określamy zmienną sesyjną login
  49.  
  50. echo "Zostałeś zalogowany jako: ".$_SESSION['login'].""; //jeśli wszystko ok, wyświetlamy login
  51. }
  52. else {
  53. echo 'Podałeś błędne dane, spróbuj ponownie.'; //jeśli wprowadzono złe dane, błąd
  54. }
  55.  
  56.  
  57. }
  58. else { echo 'Uzupełnij wszystkie pola!';}
  59. }
  60.  
  61. else {
  62. echo '<form action="?" method="post">
  63. <table><tr>
  64. <td><label><small>Gracz</small></td>
  65. <td><input type="text" name="login" ><td>
  66. </label> </tr>
  67. <tr>
  68. <td><label><small>Hasło</small></td>
  69. <td><input type="password" name="haslo"></td>
  70. </label></tr>
  71. </table>
  72. <label><center>
  73. <input type="submit" name="submit" value="Zaloguj">
  74. </label></center>
  75.  
  76. </form>'; }

I mam: Wystąpił nieoczekiwany błąd.
Jakieś pomysły tongue.gif ?
Andaramuxo
A może łaskawie napiszesz jaki błąd? snitch.gif
marian2299
  1. #
  2. $uzytkownik = mysql_query($zapytanie) or die("Wystąpił nieoczekiwany błąd."); //wynik zapytania
  3. #
  4. $uzytkownik = mysql_fetch_array($uzytkownik) or die("Wystąpił nieoczekiwany błąd.");

Na początku miałem coś "wystąpił nieoczekiwany błąd" w kodzie jako else, dlatego się pogubiłem. Więc dlaczego mysql_fetch_array się nie chce wykonać ?
jmail
linia 42

  1.  
  2. $zapytanie = "SELECT * FROM `gracze` WHERE login=". $login." and haslo=".$haslo." "; //zapytanie
  3.  


nie masz apostrofów obejmujących login i hasło a jak podejrzewam to są varchars
marian2299
Wiesz, że je miałem haha.gif ? Ale usunąłem haha.gifd. Już patrzę...

  1. $zapytanie = "SELECT * FROM `gracze` WHERE login=" '. $login.' " and haslo=" '.$haslo.' " "; //zapytanie

Doesn't work. Cały czas nieoczekiwany błąd.
Wicepsik
mysql_error
Andaramuxo
Tak
  1. $zapytanie = "SELECT * FROM `gracze` WHERE login='$login' and haslo='$haslo'"; //zapytanie
marian2299
Kod nie działa, a mysql error nic nie daje, jakiś inny powód ?
Dałem:
  1. $login = mysql_real_escape_string($_POST['login']); //określenie zmiennej login, dodanie backshalsy
  2. $haslo = md5($_POST['haslo']); //określenie zmiennej haslo, kodowanie md5
  3. echo $login;echo $haslo;

I dane były w porządku.
Andaramuxo
A gdzie mysql_connect?
marian2299
Jestem trochę n00bem, bo powinno być nick zamiast login. Teraz pokazuje "Podałeś błędne dane..." jednak podałem dobre.
  1. <?php include "antet.php"; include "func.php";
  2.  
  3. $gen_stats=gen_stats(48);
  4. ?>
  5.  
  6. <html>
  7. <head>
  8. <title><?php echo $title; ?></title>
  9. <link type="text/css" rel="Stylesheet" href="/css/magia-gra.css" />
  10. <link rel="shortcut icon" href="../images/logo.png" />
  11.  
  12. </script>
  13.  
  14. </head>
  15. <body><br>
  16. <div id='okno'>
  17. <a href='../index.php'><div id='start' class='block'></div></a>
  18. <div id='one' class='block'>
  19. <table>
  20.  
  21.  
  22. <?php
  23. if($_GET['akcja']!="")
  24. {
  25. switch( $_GET['akcja']) {
  26.  
  27. case 'loguj':
  28. include 'logowanie_.php';
  29. break;
  30.  
  31.  
  32. }
  33. }
  34. if ($_SESSION['zalogowany'] == true) {
  35. echo "Zostałeś zalogowany jako: ".$_SESSION['login']."";
  36. }
  37. elseif (isset($_POST['submit'])) {
  38. if($_POST['login'] !="" || $_POST['haslo'] !=""){
  39. $login = mysql_real_escape_string($_POST['login']); //określenie zmiennej login, dodanie backshalsy
  40. $haslo = md5($_POST['haslo']); //określenie zmiennej haslo, kodowanie md5
  41. $zapytanie = "SELECT * FROM `gracze` WHERE nick='$login' and haslo='$haslo'"; //zapytanie
  42. $uzytkownik = mysql_query($zapytanie) or die("Wystąpił nieoczekiwany błąd."); //wynik zapytania
  43. $uzytkownik = mysql_fetch_array($uzytkownik) or die("Wystąpił nieoczekiwany błąd.");
  44.  
  45. if($uzytkownik['login'] === $login && $uzytkownik['haslo'] === $haslo){
  46.  
  47. $_SESSION['zalogowany'] = true; //określamy zmienną sesyjną zalogowany
  48. $_SESSION['login'] = $uzytkownik['login']; //określamy zmienną sesyjną login
  49.  
  50. echo "Zostałeś zalogowany jako: ".$_SESSION['login'].""; //jeśli wszystko ok, wyświetlamy login
  51. }
  52. else {
  53. echo 'Podałeś błędne dane, spróbuj ponownie.'; //jeśli wprowadzono złe dane, błąd
  54. }
  55.  
  56.  
  57. }
  58. else { echo 'Uzupełnij wszystkie pola!';}
  59. }
  60.  
  61. else {
  62. echo '<form action="?" method="post">
  63. <table><tr>
  64. <td><label><small>Gracz</small></td>
  65. <td><input type="text" name="login" ><td>
  66. </label> </tr>
  67. <tr>
  68. <td><label><small>Hasło</small></td>
  69. <td><input type="password" name="haslo"></td>
  70. </label></tr>
  71. </table>
  72. <label><center>
  73. <input type="submit" name="submit" value="Zaloguj">
  74. </label></center>
  75.  
  76. </form>'; }
  77.  
  78. ?>
Andaramuxo
Jeżeli masz nadal "Wystąpił nieoczekiwany błąd." to sprawdź bazę danych i połączenia.
  1. #
  2. $uzytkownik = mysql_query($zapytanie) or die("Wystąpił nieoczekiwany błąd."); //wynik zapytania
  3. #
  4. $uzytkownik = mysql_fetch_array($uzytkownik) or die("Wystąpił nieoczekiwany błąd.");

2 razy ta sama zmienna, zmień nazwę.
jmail
tej. czkeaj czekaj. a Ty masz jakiekolwiek dane w tej tabeli?
marian2299
Andaramuxo, inne zapytania, a nawet inne mysql_fetch_array się wykonują na tej stronie.
Dałem: $uzytkownik = mysql_fetch_array(mysql_query($zapytanie)) or die("Wystąpił nieoczekiwany błąd."); // tablica, ale żadnych zmian.
jmail, mam winksmiley.jpg. Nick: adimil haslo: 4e1b5180735a3ddc843c069de4df0a38.
Andaramuxo
session_start() daj na sam początek skryptu...

@down

Patrz mój poprzedni post. smile.gif
jmail
chwila myślę tongue.gif

a tak?

  1.  
  2. $zapytanie = 'SELECT * FROM gracze WHERE nick=\''.$login.'\' and haslo=\''.$haslo.'\''; //zapytanie
  3. $uzytkownik = mysql_fetch_array(mysql_query($zapytanie)) or die("Wystąpił nieoczekiwany błąd."); //wynik zapytania
  4.  
  5.  
dadexix
probowales uzyc mysql_error?


  1. $uzytkownik = mysql_query($zapytanie) or die(mysql_error()); //wynik zapytania
  2.  
  3. $uzytkownik = mysql_fetch_array($uzytkownik) or die(mysql_error());


Mozesz tez dac jakies numerki by wiedziec gdzie sie sypie

  1. $uzytkownik = mysql_query($zapytanie) or die("Blad 1<br>".mysql_error()); //wynik zapytania
  2.  
  3. $uzytkownik = mysql_fetch_array($uzytkownik) or die("Blad 2<br>".mysql_error());


marian2299
Z tym mysql_fetch_array jest w porządku. Teraz jednak wpisując POPRAWNE dane mam "Podałeś błędne dane, spróbuj ponownie.".
Andaramuxo
Trudny nick=A-xo, daj session_start() tam przy zmiennej $_GET['akcja'] i napisz co wywala mysql_error.
jmail
i moze na odświeżenie wklej nowy kod. tak jak masz teraz
marian2299
Więc tak, pomylenie login z nick ciąg dalszy:
  1. <?php
  2. include "antet.php"; include "func.php";
  3.  
  4. $gen_stats=gen_stats(48);
  5. ?>
  6.  
  7. <html>
  8. <head>
  9. <title><?php echo $title; ?></title>
  10. <link type="text/css" rel="Stylesheet" href="/css/magia-gra.css" />
  11. <link rel="shortcut icon" href="../images/logo.png" />
  12.  
  13. </script>
  14.  
  15. </head>
  16. <body><br>
  17. <div id='okno'>
  18. <a href='../index.php'><div id='start' class='block'></div></a>
  19. <div id='one' class='block'>
  20. <table>
  21.  
  22.  
  23. <?php
  24.  
  25. if($_GET['akcja']!="")
  26. {
  27. switch( $_GET['akcja']) {
  28.  
  29. case 'loguj':
  30. include 'logowanie_.php';
  31. break;
  32.  
  33.  
  34. }
  35. }
  36. if ($_SESSION['zalogowany'] == true) {
  37. echo "Zostałeś zalogowany jako: ".$_SESSION['login']."";
  38. }
  39. elseif (isset($_POST['submit'])) {
  40. if($_POST['nick'] !="" || $_POST['haslo'] !=""){
  41. $login = mysql_real_escape_string($_POST['nick']); //określenie zmiennej login, dodanie backshalsy
  42. $haslo = md5($_POST['haslo']); //określenie zmiennej haslo, kodowanie md5
  43. $zapytanie = "SELECT * FROM `gracze` WHERE nick='$login' and haslo='$haslo'"; //zapytanie
  44. $uzytkownik = mysql_fetch_array(mysql_query($zapytanie)) or die("Wystąpił nieoczekiwany błąd: ".mysql_error());// tablica
  45. if($uzytkownik['login'] === $login && $uzytkownik['haslo'] === $haslo){
  46.  
  47. $_SESSION['zalogowany'] = true; //określamy zmienną sesyjną zalogowany
  48. $_SESSION['login'] = $uzytkownik['login']; //określamy zmienną sesyjną login
  49.  
  50. echo "Zostałeś zalogowany jako: ".$_SESSION['login'].""; //jeśli wszystko ok, wyświetlamy login
  51. }
  52. else {
  53. echo 'Podałeś błędne dane, spróbuj ponownie.'; //jeśli wprowadzono złe dane, błąd
  54. }
  55.  
  56.  
  57. }
  58. else { echo 'Uzupełnij wszystkie pola!';}
  59. }
  60.  
  61. else {
  62. echo '<form action="?" method="post">
  63. <table><tr>
  64. <td><label><small>Gracz</small></td>
  65. <td><input type="text" name="login" ><td>
  66. </label> </tr>
  67. <tr>
  68. <td><label><small>Hasło</small></td>
  69. <td><input type="password" name="haslo"></td>
  70. </label></tr>
  71. </table>
  72. <label><center>
  73. <input type="submit" name="submit" value="Zaloguj">
  74. </label></center>
  75.  
  76. </form>'; }
  77.  
  78. ?>

Aktualnie wywala mi nieoczekiwany błąd, bez mysql errora -.-.
I ugu padło (robię na testowym -.-) cały świat przeciw mnie haha.gif.
Poprawiłem $_POST['login'] na nick, ale błąd jest jeszcze przed. Znowu to fetch_array.
Andaramuxo
Mam, musisz użyć pętli http://pl2.php.net/mysql_fetch_array Ja padam, jakby się nie wyjaśniło do jutro to zobaczę (śpi).
jmail
ja bym to

  1.  
  2. $zapytanie = "SELECT * FROM `gracze` WHERE nick='$login' and haslo='$haslo'"; //zapytanie
  3. $uzytkownik = mysql_fetch_array(mysql_query($zapytanie)) or die("Wyst&plusmn;pił nieoczekiwany bł&plusmn;d: ".mysql_error());// tablica
  4. if($uzytkownik['login'] === $login && $uzytkownik['haslo'] === $haslo){
  5.  
  6. $_SESSION['zalogowany'] = true; //okre&para;lamy zmienn&plusmn; sesyjn&plusmn; zalogowany
  7. $_SESSION['login'] = $uzytkownik['login']; //okre&para;lamy zmienn&plusmn; sesyjn&plusmn; login
  8.  
  9. echo "Zostałe&para; zalogowany jako: ".$_SESSION['login'].""; //je&para;li wszystko ok, wy&para;wietlamy login
  10. }
  11. else {
  12. echo 'Podałe&para; błędne dane, spróbuj ponownie.'; //je&para;li wprowadzono złe dane, bł&plusmn;d
  13. }
  14.  
  15.  


zamienił na to

  1.  
  2. $zapytanie = 'SELECT * FROM gracze WHERE nick=\''.$login.'\' and haslo=\''.$haslo.'\'';
  3. $uzytkownik_q = mysql_query($zapytanie);
  4. if(mysql_num_rows($uzytkownik_q) == 1){
  5. $uzytkownik = mysql_fetch_array($uzytkownik_q);
  6. $_SESSION['zalogowany'] = true;
  7. $_SESSION['login'] = $uzytkownik['login'];
  8. echo "Zostałeś zalogowany jako: ".$_SESSION['login'];
  9. }
  10. else{
  11. echo 'Podałeś błędne dane, spróbuj ponownie.';
  12. }
  13.  


Poza tym teraz zauważyłem, że w zapytaniu używasz nazwy kolumny nick a później próbujesz się odwołać do kolumny login, która jest prawidłowa?
marian2299
Edit: ^ ^ Wpisując dobre dane pokazuje iż wpisałem złe
  1. <?php
  2. if($_GET['akcja']!="")
  3. {
  4. switch( $_GET['akcja']) {
  5.  
  6. case 'loguj':
  7. include 'logowanie_.php';
  8. break;
  9.  
  10.  
  11. }
  12. }
  13. if ($_SESSION['zalogowany'] == true) {
  14. echo "Zostałeś zalogowany jako: ".$_SESSION['login']."";
  15. }
  16. elseif (isset($_POST['submit'])) {
  17. if($_POST['nick'] !="" || $_POST['haslo'] !=""){
  18. $login = mysql_real_escape_string($_POST['nick']); //określenie zmiennej login, dodanie backshalsy
  19. $haslo = md5($_POST['haslo']); //określenie zmiennej haslo, kodowanie md5
  20. $zapytanie = 'SELECT * FROM gracze WHERE nick=\''.$login.'\' and haslo=\''.$haslo.'\'';
  21. $uzytkownik_q = mysql_query($zapytanie);
  22. if(mysql_num_rows($uzytkownik_q) == 1){
  23. $uzytkownik = mysql_fetch_array($uzytkownik_q);
  24. $_SESSION['zalogowany'] = true;
  25. $_SESSION['login'] = $uzytkownik['login'];
  26. echo "Zostałeś zalogowany jako: ".$_SESSION['login'];
  27. }
  28. else{
  29. echo 'Podałeś błędne dane, spróbuj ponownie.';
  30. }
  31.  
  32.  
  33. }
  34. else { echo 'Uzupełnij wszystkie pola!';}
  35. }
  36.  
  37. else {
  38. echo '<form action="?" method="post">
  39. <table><tr>
  40. <td><label><small>Gracz</small></td>
  41. <td><input type="text" name="login" ><td>
  42. </label> </tr>
  43. <tr>
  44. <td><label><small>Hasło</small></td>
  45. <td><input type="password" name="haslo"></td>
  46. </label></tr>
  47. </table>
  48. <label><center>
  49. <input type="submit" name="submit" value="Zaloguj">
  50. </label></center>
  51.  
  52. </form>'; }
  53.  
  54. ?>
jmail
weź moje i sprawdź nazwę tej kolumny
marian2299
Tak na 60% jest dobrze:
  1. <?php
  2.  
  3. include "antet.php"; include "func.php";
  4.  
  5. $gen_stats=gen_stats(48);
  6. ?>
  7.  
  8. <html>
  9. <head>
  10. <title><?php echo $title; ?></title>
  11. <link type="text/css" rel="Stylesheet" href="/css/magia-gra.css" />
  12. <link rel="shortcut icon" href="../images/logo.png" />
  13.  
  14. </script>
  15.  
  16. </head>
  17. <body><br>
  18. <div id='okno'>
  19. <a href='../index.php'><div id='start' class='block'></div></a>
  20. <div id='one' class='block'>
  21. <table>
  22.  
  23.  
  24. <?php
  25. if($_GET['akcja']!="")
  26. {
  27. switch( $_GET['akcja']) {
  28.  
  29. case 'loguj':
  30. include 'logowanie_.php';
  31. break;
  32.  
  33.  
  34. }
  35. }
  36. if ($_SESSION['zalogowany'] == true) {
  37. echo "Zostałeś zalogowany jako: ".$_SESSION['login']."";
  38. }
  39. elseif (isset($_POST['submit'])) {
  40. if($_POST['nick'] !="" || $_POST['haslo'] !=""){
  41. $login = mysql_real_escape_string($_POST['nick']); //określenie zmiennej login, dodanie backshalsy
  42. $haslo = md5($_POST['haslo']); //określenie zmiennej haslo, kodowanie md5
  43. $zapytanie = "SELECT * FROM `gracze` WHERE nick='$login' and haslo='$haslo'"; //zapytanie
  44. $uzytkownik_q = mysql_query($zapytanie);
  45. if(mysql_num_rows($uzytkownik_q) == 1){
  46. $uzytkownik = mysql_fetch_array($uzytkownik_q);
  47. $_SESSION['zalogowany'] = true;
  48. $_SESSION['login'] = $uzytkownik['nick'];
  49. echo "Zostałeś zalogowany jako: ".$_SESSION['login'];
  50. }
  51. else{
  52. echo 'Podałeś błędne dane, spróbuj ponownie.';
  53. }
  54.  
  55.  
  56. }
  57. else { echo 'Uzupełnij wszystkie pola!';}
  58. }
  59.  
  60. else {
  61. echo '<form action="?" method="post">
  62. <table><tr>
  63. <td><label><small>Gracz</small></td>
  64. <td><input type="text" name="login" ><td>
  65. </label> </tr>
  66. <tr>
  67. <td><label><small>Hasło</small></td>
  68. <td><input type="password" name="haslo"></td>
  69. </label></tr>
  70. </table>
  71. <label><center>
  72. <input type="submit" name="submit" value="Zaloguj">
  73. </label></center>
  74.  
  75. </form>'; }
  76.  
  77. ?>

I błędne dane. Więc if(mysql_num_rows($uzytkownik_q) == 1){ nie spełnia tego warunku. Ale czemu ?
jmail
może po prostu dane pomyliłeś?


zamień jeszcze to

  1.  
  2. $zapytanie = "SELECT * FROM `gracze` WHERE nick='$login' and haslo='$haslo'"; //zapytanie
  3. $uzytkownik_q = mysql_query($zapytanie);
  4.  


na to

  1.  
  2. $zapytanie = "SELECT * FROM `gracze` WHERE nick='$login' and haslo='$haslo'"; //zapytanie
  3. echo $zapytanie;
  4. $uzytkownik_q = mysql_query($zapytanie);
  5.  


i wykonaj to zapytanie na serwerze i zobacz co Ci zwróci
marian2299
Już mi się tak w tym głupim łbie poprzewracało, że dałem $_POST['nick'] a w formularzu `login`.Żal mi się haha.gif. Dziękuje. Lecą `pomógł`.
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.