Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]logowanie!?
Forum PHP.pl > Forum > Przedszkole
gubus15
witam wszystkich mam pewien problem mianowicie napisałem stronke z logowaniem i rejestracja ipt. itd.
robiac wszytsko na lokalu (krasnal) wszystko smiga bez zarzuty kiedy wrzuciłem strone na serwer (lua.pl) skrypt logowania nie działa po prostu nie da sie zalogowac nic sie nie dzieje ani nie da rady sie zarejestrowac czekam na wasza odp i pomoc
l0ud
Za mało napisałeś. Umieść źródło tego skryptu...
Maciekbjw
Co to znaczy że skrypt nie działa?

Wklej jakiś kod to Ci podpowiem, jeśli będę wiedział, bez tego trudno powiedzieć czemu to "nie działa".
gubus15
Kod
<?
  include "session.php";
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
<title>
  ..:: Logowanie na stronie www ::..
</title>
</head>
<body>

<table border=100 width=100%>
<TABLE border=0 cellspacing=0 align=center>

<!-- lewa strona -->
<tr><td width=25% height=450 valign=top>
  <?
    include "left.php";
  ?>
</td>

<!-- koniec -->

<!-- prawa strona -->
<td valign=top>
<?
  if($page=="") $page="link1";
  if(!file_exists($page.".php"))
  {
     include "default.php";
  }
  else
  {
    include_once $page.".php";
  }

?>  
</td></tr>
<!-- koniec -->

</table>


<!-- stopka -->
<center><small>Computer&security</a></small></center>
<!-- koniec -->


</body>
</html>


wiec po prostu kiedy na lokalu daje zaloguj/zarejestruj wszytsko gra loguje rejestruje kiedy wrzuciłem na serwer juz nic daje zaloguj i nic sie nie dzieje nie chce sie zalogowac nie wiem dlaczego prosze was o pomoc
Maciekbjw
No to rzeczywiście dużo wkleiłeś... Pokaż kod tego formularza z przyciskiem, tylko pokaż konkretnie, bo następnym razem nikt Cię o to prosił nie będzie.
l0ud
Kod który dałeś niewiele mówi - widać tylko dziurę pozwalającą na wykonanie lokalnego kodu [niebezpiecznie dołączasz podstronę], jednak domyślam się, co może być źle. Na serwerze jest zapewne wyłączone registered_globals, a na krasnalu włączone. Poczytaj, ja właściwie odnosić się do zmiennych tutaj

http://webhosting.pl/kategorie/kursy/kurs_...wanie_zmiennych

punkt 8.4

czyli np. do pola formularza przekazanego metodą post o nazwie 'asd' odniesiesz się tak
  1. <?php
  2. $_POST['asd']
  3. ?>

a nie tak
  1. <?php
  2. $asd
  3. ?>
gubus15
ok
tu plik pokazujacy zalogowanego i formularz:
Kod
<?
if(!auth())
{
   include "login.frm";
   print "&raquo; <a href=\"index2.php?page=registration&".SESID."\">Rejestracja nowego konta</a>\n";

}
else
{
print ('</br>');
print ('<center>');
print "<p class=ok align=center>Witaj {$_SESSION["USER_LOGIN"]}, udało się Tobie poprawnie zalogować.</p>";  
print ('<center>');

print "&raquo; <a href=\"index2.php?page=logout&".SESID."\">Wyloguj [" . $_SESSION["USER_LOGIN"] . "]</a>";
}
?>



tu plik login

Kod
<table border=1 width=100%>
<tr><th align=center>
..:: System logowania ::..
</th></tr>
</table>


<?
if(!auth())
{
   print "<p class=error align=center>Złe hasło lub login exclamation.gif!</p>";
}

?>


Kod
<form action="index2.php" method="post">
<input type="hidden" name="page" value="login">
<input type="hidden" name="<?=SESSION_NAME()?>" value="<?=SESSION_ID()?>">

<b>Login:
</b>
<input type="text" name="login" size="16" value="<?=$_POST["login"]?>">



<b>Hasło:</b>

<input type="password" name="passwd" size="16" value="">

<input type="submit" name="submit" value="Zaloguj">

</form>


i tu rejestracja

Kod
<FORM action="index2.php?p=registration&<?=SID?>" method="post">
<INPUT type="hidden" name="page" value="registration">
<INPUT type="hidden" name="<?=SESSION_NAME()?>" value="<?=SESSION_ID()?>">


<TABLE border=0 cellspacing=0 align=center>
</br>

<tr><td align=right>
<b>login:</b>
</td><td>
<INPUT type="text" name="login" value="<?=$login?>">
</td></tr>


<tr><td align=right>
<b>hasło:</b>
</td><td>
<INPUT type="password" name="passwd" value="<?=$passwd?>">
</td></tr>







<tr><td colspan=3 align=center>
<INPUT type="submit" name="submit" value="Rejestruj">
</td></tr>

</TABLE>
</FORM>

<!-- legenda -->
<b><TT>Legenda:</TT></b><p>
<b><font color="red"><TT>Login</TT></font></b> - może zawierać znaki alfanumeryczne, znaki podkreslenia i myslniki.
Wielkość liter nie ma znaczenia, a liczba znaków zawiera się w przedziale od 1 do 15.



<b><font color="red"><TT>Hasło</TT></font></b> - pamiętaj, małe litery i duże litery to zupełnie różne litery :-),
liczba znaków od 3 do 15, reszta jak wyżej.



Kod
<table border=1 width=100%>
<tr><th align=center>
..:: Rejestracja ::..
</th></tr>
</table>


<?
$result = False;
if($submit)
{
   if(!$login || !$passwd)
   {
     echo "<p class=error align=center>Wszystkie pola są obowiązkowe.</p>\n";
   }
   elseif(!eregi("^[_[:alnum:]-]{1,10}$",$login))
   {
     echo "<p class=error align=center>Nieprawidłowy login.</p>\n";
   }
   elseif(!eregi("^[_[:alnum:]-]{3,10}$",$passwd))
   {
     echo "<p class=error align=center>Niepoprawne hasło.</p>\n";
   }
   elseif(user_exists($login))
   {
     echo "<p class=error align=center>Login \"$login\" jest już zajęty.</p>\n";
   }
   else
   {
     $result = True;
     // formatuje wprowadzone dane
     $login = strtolower($login);
     add_user($login, md5($passwd));

     // informacjie o nowym koncie
     echo "<p class=ok align=center>Konto zostało utworzone.</p>\n";      
     echo "Nie zapomnij hasła ";
     echo "Możesz teraz się zalogować!!!.";  
   }
}

if(!$result)
{
   // usówa tagi html z formularza
   $login  = htmlentities(substr($_POST["login"], 0, 255));
   include "registration.frm";
}
?>



pomózcie mi
l0ud
Jest tak jak pisałem wyżej - niekonsekwentnie odnosisz się do zmiennych. Raz dobrze, np. tu
  1. <?php
  2. $login = htmlentities(substr($_POST["login"], 0, 255));
  3. ?>


a raz źle, jak np. tu
  1. <?php
  2. if($submit)
  3. ?>
gubus15
czyli jak mam zrobic zeby było dobrze kurcze pomóżcie mi bardzo mi na tym zalezy z góry bardzo dziękuje smile.gif
l0ud
Jeżeli bardzo Ci zależy, to powinieneś po prostu przeczytać ten fragment kursu który podałem wyżej, a wiedziałbyś, żeby nie robić tak
  1. <?php
  2. if($submit)
  3. ?>


a tak

  1. <?php
  2. if($_POST['submit'])
  3. ?>


albo jeszcze lepiej - tak

  1. <?php
  2. if(isset($_POST['submit']))
  3. ?>

żeby nie wywoływać żadnego notice w php...
gubus15
kurcze no ja przeczytałem ten kawalek 2 razy i jeszce inne czytałem próbowałęm to naperawic ale nie umiem nie wime jak bardzo Cie prosze napisz mi jak mam to zrobic zeby dzialo calkiem
hondek
jak wysylasz zmienna formularzem metoda POST to odbierasz ją pozniej $_POST['zmienna']; a nie $zmienna, wiec zobacz gdzie w skrypcie masz te bledy i gotowe...
gubus15
witam was tylko mam problem kiedy szukałem tego nie moge znalesc wszedzie mam $_POST["zmienna"]

moze ja zle szukam ale wydaje mi sie ze mam wszedzie dobrze;/
l0ud
  1. <?php
  2. if($submit)
  3. {
  4.  if(!$login || !$passwd)
  5. ?>


A skąd pochodzą te zmienne, jak nie z formularza? Popraw to... Oczywiście podobny błąd masz w innych miejscach...
gubus15
Poprawiłem to tak
Kod
if(isset($_POST['submit']))
{
  if(!$_POST['login'] || !$_POST['passwd'])


i no dalej rejestracj mi nie wyskuje i nie rejestruje sadsmiley02.gif
l0ud
Napisałem, że podobny błąd masz w innych miejscach. I to nie musi być tylko post, może być też np. get i session...
gubus15
NO TO JA JUZ NIE MAM SIł SAM JUZ NIE WIEM nie mógł bys pokazac co mam poprawic bardzo cie prosze sad.gif
l0ud
ehh... Umieść gdzieś pełną paczkę z całym skryptem, który działa Ci na krasnalu, to to uruchomię u siebie i poprawię...
gubus15
masz tu wszystko całą paczke
Kod
http://www.plikus.pl/zobacz_plik-||||||-126443.html

hasło:qwerty


z góry ci naprawde dziekuje a i jak mozesz to prosze o szybkie zrobienie tego bardzo mi na tym zalezy:(

zaraz jak poprawisz daj znac to usune ten plik z plikusia smile.gif pozdrawiam
l0ud
Poprawiłem to, co według mnie było nie tak:

http://www.sendspace.com/file/q9nz5k

Pamiętaj żeby nadać odpowiedni chmod dla pliku users.dat na serwerze. Pomijam fakt, że trzymanie tak danych użytkowników nie jest bezpieczne (no chyba że masz odpowiednio długie hasło)
gubus15
Bardzo ale to bardzoooooooooo ci dziękuje wszystko dziala ale mam jeszcze jedno pytanie co mam zrobic zeby wszystko było bezpieczne??
l0ud
No np. masz 3 metody

- podszkol się i zacznij używać bazy danych
- umieść plik z userami poziom niżej, do folderu z którego nie można się dostać z przeglądarki (poza public_html)
- (najbardziej prymitywna metoda tongue.gif ) zmień nazwę pliku i odniesienia do niego w skrypcie na jakąś bardziej skomplikowaną, i nikomu jej nie podawaj... tongue.gif
gubus15
ok dzieki aha a co do bazy mysql to mam juz 2 stronki i umiem zrobic skrypcik oparty na bazie dlatego tez postanowiłem zrobic teraz na plikach smile.gif (coś nowego ) ale nie wiedziałem ze to takie niebezpiczne bo np. na bazie to wime ze mozna wyciagnac sql injection ;p a na plikach nie wiedizłem ale teraz juz wiem smile.gif

Acha i powiedz mi jeszcze pod wzgledem skryptowym to wszytsko jest bezpieczne??
l0ud
Cytat
Acha i powiedz mi jeszcze pod wzgledem skryptowym to wszytsko jest bezpieczne??


Niekoniecznie. Źle dołączałeś podstronę, to to 'trochę' poprawiłem, polecam jednak zrobić po prostu switch z gotowymi elementami. Prawdopodobnie jest też 'dziura' XSS w nazwach użytkowników (zastosuj htmlspecialchars() )
likedat
Albo mozesz tez w pliku dodać <?php na jego początku i ?> na końcu. Spowoduje to parsowanie go przez php przy próbie jego otworzenia. Musisz tylko pamiętać o doklejaniu tego podczas edycji pliku. Mimo wszystko bazy są wydajniejsze, prostsze i bezpieczniejsze. Przed Sql Injection też da się obronić, trzeba tylko pamiętać, aby filtrować dane pochodzące od użytkowników. Masz opis tego wyżej, topik jest przyklejony tongue.gif
gubus15
rozumiem rozumiem a jak ta dziure xss dokladnie zalatac questionmark.gif
likedat
  1. <input type='text' value='<?php htmlspecialchars($_POST['zmienna']); ?>' />
l0ud
Przed wyświetlaniem przepuszczać nazwę użytkownika przez htmlspecialchars(). (i wszystkie inne dane, jakie user może wprowadzić na stronie)

http://pl.php.net/manual/pl/function.htmlspecialchars.php

edit

Ot tak właśnie, jak to pokazał likedat, który mnie uprzedził winksmiley.jpg
gubus15
czy teraz jest juz dobrze??
Kod
<form action="index2.php?page=login" method="post">
<!-- <input type="hidden" name="<?=SESSION_NAME()?>" value="<?=SESSION_ID()?>"> -->

<b>Login:<br></b>
<input type="text" name="login" size="16" value='<?php htmlspecialchars($_POST['zmienna']); ?>' />
<br>

<b>Hasło:</b><br>
<input type="password" name="passwd" size="16" value="">

<input type="submit" name="submit" value="Zaloguj">

</form>


oczywiscie tam gdzie zmienna to login ;p

a powiedz mi jeszcze jakie mam ustawic chmody na tebn plik users??
l0ud
jak poprawiłeś w innych miejscach też to dobrze... Chmody, to juz zależy od konfiguracji serwera. Ogólnie jeżeli nie działa, ustaw na 777.
gubus15
ok chmody ustawione xss poprawione plik z userami zmieniony haslo poprawie wiec co teraz bedzie dobrze smile.gifquestionmark.gif
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.