Jump to content
linora

PHP - weryfikacja hasła po stronie serwera

Recommended Posts

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

Share this post


Link to post
Share on other sites

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:

Share this post


Link to post
Share on other sites

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ę

Share this post


Link to post
Share on other sites

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 ?

Share this post


Link to post
Share on other sites

; 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..

Share this post


Link to post
Share on other sites

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).

Share this post


Link to post
Share on other sites

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 :)

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...


Aktualności

Artykuły



×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.