Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][JavaScript][PHP]Walidacja formularza logowania do bazy danych
Forum PHP.pl > Forum > Przedszkole
Zajac1982
Witajcie, raczkuję w tematyce PHP. Mam kilka problemów w związku z poniższym skryptem. Jest to skrypt do strony z logowaniem użytkowników. Strona łączy się z bazą 'UWIERZ', na której istnieje tabelka 'UWIERZYTELNIENI_UZYTKOWNICY'. Maja oni dwa pola: LOGIN i HASLO.

Chcę, aby po wpisaniu loginu użytkownika ("użytkownik") i hasła ("haslo"), aplikacja wygenerowała komunikat:
1) o poprawnym zalogowaniu i przekierowała do strony o nazwie index2.html
2) o niepoprawnym zalogowaniu i przekierowała z powrotem do formularza logowania.

Dodatkowo chcę, aby po poprawnym zalogowaniu został uruchomiony mechanizm obsługi sesji.

Problem w tym, że jakiekolwiek hasło nie wpiszę, zawsze przekierowuje mnie na stronę index2.html. Testy aplikacji wykazały, że również nie pojawiają mi się okienka alertowe pokazujące komunikaty o tym, czy dany użytkownik się zalogował, czy też nie.

Nie wiem, gdzie błąd popełniłem. Proszę o jakieś podpowiedzi. Proszę także o wyrozumiałość, każdemu zdarza się czegoś nie wiedzieć...

<?php
class Polaczenie
{
var $lacz;
var $baza;
var $uzytkownik;
var $host;
var $haslo;

public function lacz_z_baza($host, $uzytkownik, $haslo, $baza)

{
//$polaczenie = new mysqli('localhost', 'root', '', 'uwierz');
$this->baza="uwierz";
$this->lacz=mysql_connect("localhost", "root", "");

if(!mysql_connect)
{
echo "Brak polaczenia z baza danych";
return false;
}
else
{
mysql_select_db($this->baza);
return true;
}
return true;
}

public function ustawZapytanie($query)
{
$this->query=$query;
return query;
}

public function wykonajZapytanie($query)
{
$wynik=mysql_query($this->query);
}

}
ob_start();
//session_start();

@$uzytkownik = $_POST['uzytkownik'];
@$haslo = $_POST['haslo'];

if(empty($uzytkownik)||empty($haslo))
{
//Uzytkownik musi podac swoj identyfikator i haslo
// sprawdzenie unikatowości nazwy użytkownika

$polaczenie=new Polaczenie();
$db=$polaczenie->lacz_z_baza('localhost', 'root', '', 'uwierz');
$wynik = $polaczenie->wykonajZapytanie("select * from uwierzytelnieni_uzytkownicy;");

if (!$wynik)
{
echo '<script type="text/javascript">';
echo 'alert("brak danych")';
echo '</script>';
}

//1.else
//2.if ($wynik->num_rows>0)
//return true;
//else
// echo "Logowanie nie powiodło się.";


?>
<html>
<head>
<script type="text/javascript">
function poprawneZalogowanie()
{
alert('Dziekujemy. Poprawnie podano dane');
}

function niepoprawneZalogowanie()
{
alert('Niestety, nie podano prawidlowych danych. Prosimy sprobowac ponownie');
}

function brakDanych()
{
alert('Brak danych');
}

</script>
</head>
<body bgcolor="gray">
<form name="zalogowanie" method="post" action="index2.html">
<center><h1>Logowanie</h1>
<table border="0">
<tr><td>Podaj login:</td><td><input type="text" name="uzytkownik"></td><td>Podaj hasło:</td><td><input type="password" name="haslo"></td></tr>
<tr><td><input type="submit" value="Zaloguj sie"></td></tr>
</table>
<a href="#">Nie pamiętasz hasła?</a>
</form>

<?php
}
else if($uzytkownik=='uzytkownik'&&$haslo=='haslo')
{
// kombinacja: identyfikator i haslo jest poprawna
echo '<script type="text/javascript">';
echo 'alert("poprawne logowanie")';
echo '</script>';

session_start();
session_register("user");

$polaczenie=new Polaczenie();
$db=$polaczenie->lacz_z_baza('localhost', 'root', '', 'uwierz');

header('Location: index2.html');
ob_end_flush();
}
else
{
// kombinacja: identyfikator i haslo jest nieprawidlowa
echo '<script type="text/javascript">';
echo 'alert("niepoprawne logowanie")';
echo '</script>';

header('Location: index.php');
ob_end_flush();
}
?>
</body>
</html>
CuteOne
1. Zrezygnuj z mysql_* i zacznij używać biblioteki PDO
2. Nie mieszaj PHP z HTML bo wychodzi z tego sieczka, której nie da się czytać - poczytaj o szablonach np. Smarty
3. Po co pobierasz z bazy dane uwierzytelnienia jeżeli użytkownik nie podał loginu lub hasła??

Reasumując przepisz ten kod na nowo lub użyj frameworka - narzuci na Ciebie odpowiednie konwencje i standardy
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.