Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: problem z logowanie
Forum PHP.pl > Forum > Przedszkole
kamilkomo
Witam

Mam problem ze zrobieniem poprawnego systemuu logowania, niestety nie wyskakuje zaden blad, po kliknieciu na submit="loguj" w pliku index.php skrypt przenosi mnie do pliku logusr.php a nie do main.php tak jak jest ustawione w kodzie php nie ma zadnego komunikatu tj, czy jestem zalogowany czy tez nie. ponizej przedstawie kod


formularz w pliku index.php
Kod
    <form id="form1" name="form1" method="post" action="logusr.php">
    <b>Login:</b> <input type='text' name='login' id='login' size='15' />
    <b>Haslo:</b> <input type='password' name='haslo'id='haslo' size='15' />
    <input name="login" type="submit" id="login" value="login" />
  </form>


kod w pliku logusr.php na samej gurze tego pliku mam jeszcze session_start();

Kod
<div id="LOGUJ">
<?php

$login=$_POST[‘login’];
if($login) {


  $login=$_POST[‘login’];
  $md5_haslo=md5($_POST[‘haslo’]);


  $host="*****************"; // Nazwa hosta.
  $db_user="*********"; // Nazwa użytkownika - MySQL.
  $db_password="*******"; // Hasło do bazy.
  $database="*********"; // Nazwa bazy.
    mysql_connect($host,$db_user,$db_password);
    mysql_select_db($database);
        
// Sprawdzenie nazwy użtkownika i hasła.
  $rezultat=mysql_query("select login,haslo FROM users WHERE login=’$login’ AND haslo=’$md5_haslo’");
    if(mysql_num_rows($rezultat)){
        
   session_register("uzytkownik"); // Zapamiętuje zmienną sesji
    header("location:main.php"); // Przekierowanie do strony main.php
  exit;
  }else {
  $message="Nieprawidłowa nazwa użytkownika lub hasło";
  }
}
?>
</div>


Poprosze o jakas pomoc
nospor
Nie: $_POST[‘login’];
a: $_POST['login'];
Patrz jakiś ciapków używasz.
Analogicznie reszta

ps: przenosze
kamilkomo
niestety zmiana ciapkow nie pomogla z byt wiele, czy wpisze poprawne haslo czy tez nie to i tak wyskakuje napis ze jestem zalogowany a i nie przenosi mnie do strony main.php tylko zostaje na logusr.php? prosze o pomoc
nospor
nie:login=’$login’ AND haslo=’$md5_haslo’
a: login='$login' AND haslo='$md5_haslo'
hind
a najlepuiej jeszcze po mysql_query() dodać or die(mysql_error()) (w celu sprawdzenia czy są błedy)
i mysql_real_Escape_string($login) (chyba że masz włączone magic_quotes to w tedy jest to nie potrzebne)
  1. $rezultat=mysql_query("select login,haslo FROM users WHERE login='".mysql_real_escape_string($login)."' AND haslo='$md5_haslo' LIMIT 1") or die(mysql_error());
kamilkomo
niestety ale nic to nie pomoglo , wprowadzilem wszystkie poprawki jakie podaliscie, ale niestety dalej nic. Czy podam haslo i login ktory sie znajduje w bazie czy tesz nie to i tam mam komunikat ze jestem zalogowany a i nie przenosi mnie do strony main.php. kod po poprawkach ponizej, jesli ktos ma jakies pomysly bede wdzieczny

Kod
<div id="LOGIN">
<?php

$login=$_POST['login'];
$haslo=$_POST['haslo'];
if($login) {
  // W momencie kliknięcia w przycisk formularza
  $login=$_POST['login'];
  $haslo=$_POST['haslo'];
  // Koduje hasło funkcja md5().

// Połaczenie z baza.
  $host="************"; // Nazwa hosta.
  $db_user="************"; // Nazwa użytkownika - MySQL.
  $db_password="************"; // Hasło do bazy.
  $database="************"; // Nazwa bazy.
    mysql_connect($host,$db_user,$db_password);
    mysql_select_db($database);
        
// Sprawdzenie nazwy użtkownika i hasła.
      $rezultat=mysql_query("select login,haslo FROM users WHERE login='".mysql_real_escape_string($login)."' AND haslo='$md5_haslo' LIMIT 1") or die(mysql_error());
    if(mysql_num_rows($rezultat)){
        print "jestes zalogowany";
   session_register("uzytkownik"); // Zapamiętuje zmienna sesji
    header("location:main.php"); // Przekierowanie do strony main.php
  exit;
  }else {
  $message="Nieprawidłowa nazwa użytkownika lub hasło";
  }
}
?>

</div>
hind
nie przeniesie cie bo wcześniej wyświetlasz że jesteś zalogowany (header, set_cookie, session_start nie lubią gdy przed ich wywołaniem coś się wyświetla i wtedy plują błedami)
na początek dodaj ob_start() , a tak w ogóle to ustaw error_reporting na E_ALL ^ E_NOTICE ;
kamilkomo
niestety dalej nic, moze mogl bys mi napisac jak to powinno wygladac bo juz zglupialem
nospor
Zastosuj się do podanych wszystkich tu porad:
Temat: Jak poprawnie zada pytanie
a może zobaczysz dodatkowe bledy/informacje które ułatwią Tobie lub nam analize problemu
kamilkomo
zastosowalem sie do wszystkich porad i niesttety dalej nic, wywalilem linijke ktora wyswietla napis ze jestes zalogowany i dalej nie przenosi mnie do main.php w ponizszym kodzie przedstawiam wszystkie naniesione poprawki, a co do raportu bledow php to czekam na odpowiedz od admistratorow serweru

i oczywiscie na samej gorze strony dodalem:

<?php
ob_start();
session_start();
?>

Kod
<div id="LOGIN">
<?php
    $login=$_POST['login'];
    if($login) {
    
  $login=$_POST['login'];
  $md5_haslo=md5($_POST['haslo']);
    
      // Poł?czenie z baz?.
  $host="*"; // Nazwa hosta.
  $db_user="*"; // Nazwa użytkownika - MySQL.
  $db_password="*"; // Hasło do bazy.
  $database=*"; // Nazwa bazy.
    mysql_connect($host,$db_user,$db_password);
    mysql_select_db($database);

        
// Sprawdzenie nazwy użtkownika i hasła.
$rezultat=mysql_query("select login,haslo FROM users WHERE login='".mysql_real_escape_string($login)."' AND haslo='$md5_haslo' LIMIT 1") or die(mysql_error());

    if(mysql_num_rows($rezultat)){
        
    session_register("uzytkownik"); // Zapamiętuje zmienną sesji
    header("location:main.php"); // Przekierowanie do strony main.php
  exit;
  }else {
  $message="Nieprawidłowa nazwa użytkownika lub hasło";
  }
}
?>
</div>


display_errors wlaczone i niestety nic nie wyswietla, zero bledu.
hind
a jak masz ustawiony error_reporting ?
Bo tak to wszystko wydaje się być dobrze
kamilkomo
dostep do tej funkcji mam jedynie przez panel administracyjny serwera , w ktorym to wlaczam lub wylaczam error_reporting.
hind
to jesze pod ob_start() dodaj error_reporting(E_ALL);
jak to nie pomoże (nie wyświetli błędów) to już nie wiem dla czego header location nie działa
kamilkomo
dodalem i bledow brak nic nie wyswietla, tzn wyswietlil mi jeden ale to zwiazany z wyswietlaniem danych z tabeli, wpisalem inna nazwe tabeli a inna nazwa byla w bazie, poprawilem blad i teraz juz zadnego nie wyswietla.

Ale dla czego tez nie wyswietla komunikmatu o blednym logowaniu jesli podam nie istniejace dane takie jak login i haslo?
Czy podam dobre czy zle dane logowania dzieje sie dokladnie to samo, przechodzi do strony logusr.php i nic po za tym, zero komunikatu o zlym logowaniu a w przypadku wpisania poprawnego loginu nie przenosi mnie do main.php
hind
  1. $rezultat=mysql_query($q = "select login,haslo FROM users WHERE login='".mysql_real_escape_string($login)."' AND haslo='$md5_haslo' LIMIT 1") or die(mysql_error());
  2. die($q);

i to co wyświetli sprawdź w phpMyAdmin co wybierze
dodatkowo możesz jeszcze sprawdzić
  1. var_dump($_POST);

żeby zobaczyć co w ogóle przyltauje z browsera
kamilkomo
nie bardyo royumie jak mam sprawdyic w phpMzadmin to co wzbierye_

po wpisaniu tych linijek kody i po wyslaniu danych po przez formularz pojawia sie pusta strona i zero bledow
minolone
Sprawdź to, powinno działać.
  1. <?php
  2.  
  3. if(!empty($_POST['login']) && !empty($_POST['haslo'])) {
  4.  
  5. $login=$_POST['login'];
  6. $md5_haslo=md5($_POST['haslo']);
  7.  
  8. // Poł?czenie z baz?.
  9. $host = '*'; // Nazwa hosta.
  10. $db_user = '*'; // Nazwa użytkownika - MySQL.
  11. $db_password = '*'; // Hasło do bazy.
  12. $database = '*'; // Nazwa bazy.
  13. mysql_connect($host,$db_user,$db_password) or die(mysql_error());
  14. mysql_select_db($database) or die (mysql_error());
  15.  
  16. // Sprawdzenie nazwy użtkownika i hasła.
  17. $rezultat=mysql_query('SELECT login, haslo FROM users WHERE login="'.mysql_real_escape_string($login).'" AND haslo="'.$md5_haslo.'" LIMIT 1') or die(mysql_error());
  18.  
  19. if(mysql_num_rows($rezultat)){
  20. session_register("uzytkownik"); // Zapamiętuje zmienną sesji
  21. header("location:main.php"); // Przekierowanie do strony main.php
  22. }else {
  23. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  24. }
  25. } else {
  26. echo 'Nie podano nazwy uzytkownika lub hasła!';
  27. }
  28. ?>
kamilkomo
niestety ale nie dziala nadal reakcja taka sama jaka zostala opisana wyzej ani nie przenosi do main.php ani tez nic nie wyswietla , kurde o co tu w tym chodzi? zwarjuje.......
minolone
Zamień to
  1. if(mysql_num_rows($rezultat)){
  2. session_register("uzytkownik"); // Zapamiętuje zmienną sesji
  3. header("location:main.php"); // Przekierowanie do strony main.php
  4. }else {
  5. $message="Nieprawidłowa nazwa użytkownika lub hasło";
  6. }
  7. } else {
  8. echo 'Nie podano nazwy uzytkownika lub hasła!';
  9. }

na to i zobacz jaki bedzie komunikat,
  1. if(mysql_num_rows($rezultat)){
  2. echo 'Wszystko OK';
  3. }else {
  4. echo 'Nieprawidłowa nazwa użytkownika lub hasło';
  5. }
  6. } else {
  7. echo 'Nie podano nazwy uzytkownika lub hasła!';
  8. }
kamilkomo
po wpisaniu poprawnych danych > Nieprawidłowa nazwa użytkownika lub hasło

Mam taka hipoteze, w bazie danych mam hasla w czystej postaci , nie zaszyfrowane w md5, a wysylam haslo zaszyfrowane moze to jest przyczyna nie poprawnego logowania
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.