logowanie [php]

0

Napisałem taki kodzik i nie wiem czego nie chodzi :/

To wywołuje logowanie:

if ($HTTP_POST_VARS[page]=='login')
{
 echo("
<CENTER><FORM NAME=\\"Login\\" ACTION=\\"?page=loginc\\" METHOD=\\"POST\\">
 <B>Proszę się zalogować :</B> <BR><BR>
 Nick :&nbsp;<INPUT TYPE=\\"text\\" NAME=\\"nick\\" VALUE=\\"\\"><BR>
 Hasło:&nbsp;<INPUT TYPE=\\"password\\" NAME=\\"haslo\\" VALUE=\\"\\"><BR>
 <INPUT TYPE=\\"submit\\" VALUE=\\"Loguj\\">
</FORM></CENTER>
 ") ;
}

//Sprawdzanie danych logina
if ($HTTP_POST_VARS[page]=='loginc')
{
 logowanie($HTTP_POST_VARS[nick], $HTTP_POST_VARS[haslo]);
}

a to jest funkcja logowanie

function logowanie ($nick, $haslo)
{
$plik="baza/users/users.ini.php";
$file =file($plik);
for ($i=0;$i<count($file);$i++)
{
      $odczyt = explode("||", $file[$i]);
      echo("$odczyt[0]||$odczyt[1]||<br>");
      $baza[$i] = "$odczyt[0]||$odczyt[1]||" ;
	}
$pass=md5($haslo);
$ileusers=sizeof($baza);
$userhaslo=("$nick||$pass||");
//echo($userhaslo);
for ($i=0;$i<$ileusers;$i++)
{
    if ($userhaslo==$baza[$i])
{
session_start();
session_register('nick');
session_register('pass');
  echo("
  <CENTER><B>Typer</B></CENTER><BR><HR>
  <CENTER><A HREF=\\"typer.php?sid=". session_id() ."\\" TARGET=\\"_top\\">Przejdź to typowania wyników</A><BR>
  Liga typerów</CENTER>

  ");

}
else
{
   echo("Błędne hasło lub nie ma takiego użytkownika !!");
}
    }
	

}

Co jest nie tak ???? :/

0

Ale napisz jakie sa objawy?? gdzie przestaje dzialac. W formularzu w action nie masz podanego pliku. Moze to jest tym spowodowane.

0

objawy są takie że po zalogowaniu pisze, że jest błędne hasło <ort>chociaŻ </ort>sie podaje prawidłowe a i poza tym formularz jest ok ?page=loginc jest odesłaniem do tej samej strony. Wydaje mi sie że jest coś nie tak z tablicą [glowa] ale nie wiem co :-/ .

0

[CIACH!]
Co jest nie tak ???? :/
Przeanalizujmy twój kod (za "//" będą moje komentarze):

function logowanie ($nick, $haslo)
{
$plik="baza/users/users.ini.php";
$file =file($plik); // tworzysz tablice z zawartością pliku (każdy element tablicy to jedna linijka z pliku)
<b>for ($i=0;$i<count($file);$i++) // pętla, która wykonuje się tyle razy ile jest lini w pliku
{
      $odczyt = explode("||", $file[$i]); // tworzysz tablice, której każdym elementem kolejna część łańcucha podzielonego względem "||"
      echo("$odczyt[0]||$odczyt[1]||<br>"); // wyświetlasz pierwszy i drugi element tablicy (login i haslo)
      $baza[$i] = "$odczyt[0]||$odczyt[1]||" ;
    }</b>
$pass=md5($haslo); // hashujesz haslo metodą MD5
<b>$ileusers=sizeof($baza);</b> // tu daj lepiej $ileusers=count($baza) :)
$userhaslo=("$nick||$pass||");
//echo($userhaslo);
for ($i=0;$i<$ileusers;$i++) // pętla wykonująca się tyle razy ile jest użytkowników w bazi
{
    if ($userhaslo==$baza[$i]) // porównanie czy "login||haslo||" jest zgodne z odpowiednikiem tego ciągu w bazie
{
session_start(); // daj to na początku skryptu (pierwsza linijka po "<?php"
session_register('nick');
session_register('pass');
  echo("
  <CENTER><B>Typer</B></CENTER><BR><HR>
  <CENTER><A HREF=\"typer.php?sid=". session_id() ."\" TARGET=\"_top\">Przejdź to typowania wyników</A><BR>
  Liga typerów</CENTER>

  ");

}
else
{
   echo("Błędne hasło lub nie ma takiego użytkownika !!");
}
    }
    

}

Pogrubiłem te części kodu, które wg mnie są zbędne lub można wykonać daną część skryptu dużo optymalniej (ew. dany kod jest błędny).

1 użytkowników online, w tym zalogowanych: 0, gości: 1