Skocz do zawartości
linora

PHP - weryfikacja hasła po stronie serwera

Rekomendowane odpowiedzi

Dopiero zaczynam swoją przygodę z PHP i już na samym początku wystąpił problem, z którym sam nie mogę sobie poradzić. Czytam sobie kurs PHP ze strony http://www.me2.pl/kurs.php?d=php&f=5#formularze i mam problem ze skryptem dotyczącym weryfikacji hasła po stronie serwera. Polega on na tym, że gdy stworzę w htmlu stronkę z formularzem, z którego pobierane są login i hasło, a następnie w PHP skrypt sprawdzający ich poprawność i mający po pozytwnej weryfikacji otworzyć inną stronkę, to nie działa to tak jak powinno. Po otwarciu strony z formularzem i wpisaniu wymyślonego loginu i hasła otwiera mi się strona z kodem skryptu, której nazwa jest wartością przy znaczniku FORM ACTION="weryf.php" z htmlowskiego pliku z formularzem. O co chodzi, czemu to nie działa? Czy autor kursu pozostawił coś w domyśle, coś trzeba dopisać do tego skryptu jeszcze, stworzyć inny plik, w którym będzie zapisany poprawny login i hasło? Proszę o pomoc. Może ktoś przetestuje ten skrypt i powie mi co jest nie tak.

 

Plik z formularzem:

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"><html><head><meta http-equiv="Content-type" content="text/html; charset=iso-8859-2" /><body><FORM ACTION="weryf.php3" METHOD="POST">Podaj login: <INPUT TYPE="text" NAME="form_login"><BR>Podaj hasło: <INPUT TYPE="password" NAME="form_password"><BR><INPUT TYPE="submit" VALUE="zatwierdź"></FORM></body></html>

Plik ze skryptem:

 

[php:1:0493555257]<?

if ($login==$form_login&&$password==$form_password) {

header("Location: tajne.php3");

}

else {

echo("ACCESS DENIED");

}

?>[/php:1:0493555257]

 

Wstawilem w BBCODE - Noose

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Przede wszystkim, popraw to:

Plik ze skryptem:

 

<?

if ($login==$form_login&&$password==$form_password) {

 header("Location: tajne.php3");

}

else {

 echo("ACCESS DENIED");

}

?>

na coś takiego:

<?php

if ($login==$_POST['form_login'] && $password==$_POST['form_password']) {

header("Location: tajne.php3");

}

else {

echo("ACCESS DENIED");

}

?>

Podstawą, żeby cokolwiek zadziałało, jest pisanie skryptów jak należy :wink:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

jak juz to tak:

 

[php:1:ba49a1f31a]<?

if (($login == $_POST['form_login']) && ($password == $_POST['form_password']))

{

include ('tajne.php3');

}

else

{

echo "ACCESS DENIED" ;

}

?>[/php:1:ba49a1f31a]

 

UZYWAC POPRAWNYCH TAGOW :!:

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

1) <? i <?php to to samo :!:

Dokształć się trochę.

W przyszłości nie pisz o czymś o czym masz niewielkie pojęcie. Po pierwsze, <?php jest bardziej uniwersalne (na niektórych serwerach <? nie działa). Po drugie, dłuższa wersja - <?php - jest zgodna ze specyfikacją XML, a <? nie. Między innymi dlatego w dokumentacji PHP, zalecane jest stowowanie dłuższego znacznika. Oczywiście, na większości serwerów <? będzie spokojnie działać, ale wg mnie warto od razu pisać porządnie i zgodnie ze standardami. Przejrzyj źródła różnych skryptów, choćby phpBB.

2) UZYWAC TAGOW [ php ] [/ php ] :!:

Przepraszam, nie wiedziałem, że takie tagi są - w przyszłości się poprawię

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jakos pracuje z php od jakiegos czasu i nie zauwazylem, zeby na serwerach ( jakis 30 na ktorych pracowalem ) cos bylo nie tak ze znacznikiem <?. Jezeli znacznik <? mialby byc nie poprawny to po cholere go wprowadzali?

 

tak z ciekawosci. co ma tutaj XML do gadania skoro php to server-side a xml nie ?

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

; NOTE: Using short tags should be avoided when developing applications or

; libraries that are meant for redistribution, or deployment on PHP

; servers which are not under your control, because short tags may not

; be supported on the target server. For portable, redistributable code,

; be sure not to use short tags

Nie wymaga komentarza.. swoja droga farta masz niesamowitego, ze nie trafiles jeszcze na serwer z short_open_tags Off..

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak to skad? PHP otrzymuje calutki pliczek i sobie interpretuje tylko to co powinien (wg ustawien konfiguracji). A o tym jakie pliki sa przez niego przepuszczane decyduje serwer http.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jak to skad? PHP otrzymuje calutki pliczek i sobie interpretuje tylko to co powinien (wg ustawien konfiguracji). A o tym jakie pliki sa przez niego przepuszczane decyduje serwer http.

To było pytanie retoryczne skierowane do noose'a ;] (a konkretnie chodziło o podjęcie decyzji do którego interpretera ma serwer wysłać kod).

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

aha ;]

(a konkretnie chodziło o podjęcie decyzji do którego interpretera ma serwer wysłać kod).

ale przeciez ta decyzje serwer (a przynajmniej apache...) podejmuje na podstawie rozszerzenia pliku a nie zawartosci, wiec nijak to sie ma do tych tagow :)

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Nie wiem, może się mylę. W każdym razie zacząłem zgłębiać problem.

 

Spróbowałem trochę z innej beczki - coś takiego:

 

plik.php

 

[php:1:fdc10c292c]

<?xml version="1.0" encoding="iso-8859-2" ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml" xml: lang="pl" lang="pl">

<head>

<meta http-equiv="Content-Type" content="text/xml; charset=iso-8859-2" />

<title>plóm</title>

</head>

<body>

plóm1

 

<?php

 

echo "plóm2";

 

?>

</body>

</html>

[/php:1:fdc10c292c]

 

U mnie podejrzewam, że '<?xml' interpretuje jako '<?' i 'xml' już jako część skryptu i wywala błąd (włączone short tags). Będę musiał sprawdzić jak to ma się z wyłączonymi krótkimi tagami.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Jest dokladnie tak jak piszesz. Z wylaczonymi short tagami naglowek xml'a przejdzie bez zajakniecia (przyzwyczailem sie juz jednak wyswietlac go za pomoca echo z php, bo raczej mam pecha do serwerow i prawie zawsze jest short tags off).

Ale nadal nijak ma sie do to serwera i jego decyzji, do ktorego interpretera slac kod.

Akurat to pojdzie w calosci do interpretera php, ktory (w przypadku short_open_tags On) odnajdzie odrazu na poczatku "swoj" tag i zacznie jego wnetrze interpretowac jako kod php, co zakonczy sie bledem. Z wylaczonymi krotkimi tagami "swoj" tag odnajdzie dopiero pozniej i wtedy bedzie all ok.

Udostępnij tę odpowiedź


Odnośnik do odpowiedzi
Udostępnij na innych stronach

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.

Gość
Dodaj odpowiedź do tematu...

×   Wklejono zawartość z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

Ładowanie


×
×
  • Dodaj nową pozycję...