Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]Logowanie - do sprawdzenia :)
Forum PHP.pl > Forum > PHP
Robert
Witam mam taka prosbe......mogl by mi ktos zweryfikowac kod[php:1:ef94c11438]<?php
if(!empty($_POST)) {
if(file_exists('includes/users/'.$_POST['logg'].'.dat')) {
include('includes/users/'.$_POST['logg'].'.dat');
$_POST['passw'] = md5($_POST['passw']) ;
if(isset($log) && isset($pass)) {
if($log == $_POST['logg']) {
if($pass == $_POST['passw']) {
session_start();
session_register("log");
session_register("pass");
header('location: index.php?page=download&'.SID);
exit();
} else {
echo 'Nieprawidlowe haslo!'; }
}
}
}
}

?>
<? if(!empty($_SESSION["log"])){
echo "<table height='68' width='100%' cellpadding='0' cellspacing='0'><tr><td><table width='100%' cellpadding='1' cellspacing='0' style='border-top:1px solid #000000; border-bottom:1px solid #000000'><tr><td align='right' bgcolor='#666666'><font color='#000000'>Witaj <b>".$_SESSION["log"]."</font>&nbsp;</td></tr></table></td></tr><tr><td><table height=100% width='100%' cellpadding='2' cellspacing='0'><tr><td align='center'><font color='#999999'>Jestes zalogowany</font></td></tr><tr><td align='right'>&laquo; <a href='index.php?page=logout' class='admin'>wyloguj</a>&nbsp;</td></tr></table></td></tr></table>";
} else {?>
<table width="100%" cellpadding="1" cellspacing="0"><FORM method="POST" action="<?php echo $PHP_SELF?>">
<tr>
<td colspan="2" height="6"></td>
</tr>
<tr>
<td>&nbsp;Login:</td><td><INPUT type='text' class='login' name='logg'></td>
</tr>
<tr>
<td>&nbsp;Haslo:</td><td><INPUT type="password" class="login" name="passw"> <INPUT type="submit" value="ok"></td></tr>
<tr><td colspan='2'>&nbsp;&raquo; <a href='index.php?page=lost_pass'>Zapomnialem haslo</a></td></tr>
</FORM></table>
<? } ?>[/php:1:ef94c11438]
Tu uzwam session_register, lecz wiem ze gdy sie uzywa $_SESSION to nie mozna tego uzywac......wiec jak by musial wygladac kod by mozna bylo bez problemow stosowac $_SESION......mozliwe ze to moze byc powod nadpisywania mi zmiennej.....
marcin96
[quote="Robert"]Witam mam taka prosbe......mogl by mi ktos zweryfikowac kod

[php:1:99e621e908]
<?
if(file_exists('includes/users/'.$_POST['logg'].'.dat')) {
include('includes/users/'.$_POST['logg'].'.dat');
?>
[/php:1:99e621e908]

Pierwsza sprawa - co, jak jakis inny user serwera, na ktorym masz pliki poda w polu logg cos takiego:

../../../mietek/moje_dane

...czyli po prostu podepnie swoj wlasny plik z danymi, gdzie zarejestruje wlasne zmienne log (wartosc taka jak wyzej napisalem) oraz haslo? Jesli chcesz koniecznie w ten sposob pobierac dane o uzytkowniku, to sprawdz najpierw $_POST['logg'] odpowiednimi wyrazeniami regularnymi, czy nie zawiera znakow / . itd. Mozesz tez zrobic plik /include/users.dat i najpierw sprawdzic, czy uzytkownik $_POST['logg'] istnieje, czy nie... Nie ufaj pobieranym danym nigdy snitch.gif)

[php:1:99e621e908]
<?
$_POST['passw'] = md5($_POST['passw']) ;
if(isset($log) && isset($pass)) {
if($log == $_POST['logg']) {
if($pass == $_POST['passw']) {
session_start();
$_SESSION['log'] = $log;
$_SESSION['pass'] = $pass;
header('location: index.php?page=download&'.SID);
exit();
} else {
echo 'Nieprawidlowe haslo!'; }
}
}
}
}

if(!empty($_SESSION["log"])){
?>
[..]
[/php:1:99e621e908]

I tu kolejne niebezpieczenstwo: co jezeli serwer bedzie mial wlaczone register_globals oraz kolejnosc rejestrowania zmiennych inna niz standardowe EGPCS?

Poza tym zweryfikuj tez dane sesji, czy sie zgadzaja z Twoimi danymi.
Robert
Odnosnie tematu:
Juz sobie poradzilem wiec mozna go zamknac...

Dla zainteresowanych blad tkwil w tym ze zapisywalem zmienna z pliku....a teraz zapisuje zmienna z formularza logujacego i wysztko jest ok.
marcin96
a co manual mowi na temat session_register? a no to:
Cytat
If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the php directive register_globals is disabled.
[...]
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered(), and session_unregister().


wiecej: http://pl2.php.net/manual/en/function.sess...on-register.php
Robert
Nie uzywam session_register. WIem ze nie mozna tego jednoczesnie uzywac
[php:1:6ebea7edce]<?php
_POST['passw'] = md5($_POST['passw']) ;
if(isset($log) && isset($pass)) {
if($log == $_POST['logg']) {
if($pass == $_POST['passw']) {
session_start();
$_SESSION["logg"] = $_POST['logg'];
$_SESSION["passw"] = $_POST['passw'];
header('location: index.php?page=download&'.SID);
exit();
} else {
echo 'Nieprawidlowe haslo!'; }
?>[/php:1:6ebea7edce]
To jest kawalek kodu...
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.