PHP: Senaryoyu adınızı, ancak hafif değişiklik ihtiyacı

0 Cevap php

Ben bir dosyada kullanıcıların giriş kendi adınızı / geçiş giriş ve depolar bu bilgilere sahip bir web sitesi var. İşte benim geçerli kod:

function getPassword( $user )
{
  $passwords= array 
       (
        'Admin' => '123456',
        'Moderator' => 'abcde'
       );
 eval(file_get_contents('./login.info'));  //<--- THIS is where usernames/passwords are stored  

    $password = $passwords[ $user ];
    if ( NULL == $password )
        return NULL;

    return array( $user, $password );
}

Bu yeni hesap oluşturmak kullanıcılar için ben kodu:

<?php
if((isset($_POST['username']))and(isset($_POST['password']))){
 $file = "login.info";
 $fh = fopen($file, 'a');
//prevent sql injection
function check_field($fh)
{
  if(!preg_match("/[^a-zA-Z0-9\.\-\_\@\.\+\~]/",$fh))
  return TRUE;
  else
  return FALSE;
}
if(!check_field($_POST[username]))
{
  header("Location:illegalchars.html");
  break;
}
if(!check_field($_POST[password]))
{
  header("Location:illegalchars.html");
  break;
}
 fwrite($fh, '$passwords["'.$_POST['username'].'"]="'.$_POST['password'].'";');
 fclose($fh);
 header("Location:success.html");
 break;
}
?>

I know my code isn't pretty.. and has major issues.
One of which is: If someone creates an account with username x, anyone can still create x with a new password to gain control.
The easy solution I had was to move the eval(file_get_contents('./login.info')); on top of the admin accounts and make new accounts append on THE TOP of the list of new user/passes. However, I can't figure out why putting eval on top of the array doesn't work. Also, how I can get the code to append on the top of the list. Any help is greatly appreciated.

EDIT == == Ben bu kodu KADAR eleştiri olduğunu biliyorum, ama birisi sadece soruya cevap lütfen? Ben (bu sonunda, bütün bu şey zaten yeniden yazılması gerekecek, proof-of-concept oyun için) şu anda güvenlik / performansını artırmak için çalışıyorum değilim. Ben sadece fonksiyonel bir senaryo istiyorum, soru cevap lütfen? :]

0 Cevap