Segítene valaki? PHP
Adott egy regisztrációs script a gond vele a névellenőrzésben van. Akárhányszor újra beregisztrálja ugyanazt a nicket:
"<?php
include('PATHtoYOUR/chat/lib/data/users.php');
//check existing users
if ($_POST['username'])
{
//if user entered a name
}
//collect information from users.php
$user_amount = count($users);
for ($i=0; $i <=$user_amount;$i++);
{
//check usage of name
if (strtolower($_POST['username']) == strtolower($users[$i]['userName']))
$username_used = 1;
}
//make sure user chose a password
if (!$_POST['password'])
$password_error = 1;
//ensure username avalible and password chosen
if (!$username_used and !$password_error)
{
//present user id accepted message
print 'Your selection '.$_POST['username'].' was accepted... your account was created. You may now login!!!';
$next_user = $user_amount++;
$new_user_information = '
//remote created from '.$_SERVER['REMOTE_ADDR'].'
$users['.$next_user.'] = array();
$users['.$next_user.'][\'userRole\'] = AJAX_CHAT_USER;
$users['.$next_user.'][\'userName\'] = \''.$_POST['username'].'\';
$users['.$next_user.'][\'password\'] = \''.$_POST['password'].'\';
$users['.$next_user.'][\'channels\'] = array(0,1);
?>';
$file_edit = fopen('PATHtoYOUR/chat/lib/data/users.php', 'r+');
fseek($file_edit, -3,SEEK_END);
fwrite($file_edit, $new_user_information);
fclose($file_edit);
}
//end of php
?>
<table border="0" align="center">
<table border="0" align="center">
<tr>
<td>Use the form below to create a Chat user account.</td>
</tr>
<tr>
<td>
<!-- collect username and password information via form -->
<form action="" method="post">
Username:<input name="username" type="text" value="" /> 16 Character Maximum<br>
Password:<input name="password" type="text" value="" /> No requirements.<br>
<input name="submit" type="submit" value="Create" />
</form>
</td>
</tr>
</table>
</table>"
És így néz ki a file amibe írja és amiben ellenőriznie kéne:
"<?php
// List containing the registered chat users:
$users = array();
// Default guest user (don't delete this one):
$users[0] = array();
$users[0]['userRole'] = AJAX_CHAT_GUEST;
$users[0]['userName'] = null;
$users[0]['password'] = null;
$users[0]['channels'] = array(0);
// Sample admin user:
$users[1] = array();
$users[1]['userRole'] = AJAX_CHAT_ADMIN;
$users[1]['userName'] = 'admin';
$users[1]['password'] = 'admin';
$users[1]['channels'] = array(0,1,2);
// Sample moderator user:
$users[2] = array();
$users[2]['userRole'] = AJAX_CHAT_MODERATOR;
$users[2]['userName'] = 'moderator';
$users[2]['password'] = 'moderator';
$users[2]['channels'] = array(0,1,2);
// Sample registered user:
$users[3] = array();
$users[3]['userRole'] = AJAX_CHAT_USER;
$users[3]['userName'] = 'user';
$users[3]['password'] = 'user';
$users[3]['channels'] = array(0,1,2);
?>"





"így néz ki a file amibe írja és amiben ellenőriznie kéne"
Hát ez a kód egész egyértelműen nem csinál semmi ilyesmit.
De, ez beleírja, csak az ellenőrző rész nem működik. Ez itt:
$user_amount = count($users);
for ($i=0; $i <=$user_amount;$i++);
{
//check usage of name
if (strtolower($_POST['username']) == strtolower($users[$i]['userName']))
$username_used = 1;
}





Oké, akkor MOST hagyd ezt abba és soha többé ne kezdj programozni!
Nem tudom, hogy te írtad-e ezt a kódot vagy valahonnan másoltad, de eltörném a kezét, aki írta, mert ez tipikus mintapéldája annak, hogyan NEM szabad csinálni!
1. Regisztrációhoz adatbázist kell használni, nem pedig egy PHP file-ba array-ként behányni mindent. Ha lesz 5000 usered, akkor minden egyes esetben felépül egy 5000 elemű tömb és abban keresgélsz? Óriási memóriapazarlás!
2. Jelszavakat NEM tárolunk plain text-ben, pláne nem egy PHP file-ban az összes user jelszavát!
3. User inputot SOHA nem használunk filter nélkül. Te simán behányod a PHP kódba. És ha a user történetesen azt adja usernévnek, hogy ';?> akkor szét is barmolta az egészet. Sőt! Mivel ellenőrzés nélkül PHP kódba tolod ki a user inputot, ami utána a szerveren fog futni, AKÁRMIT megtehet a szerveren!
4. Telán illene definiálni a változókat: (!$username_used and !$password_error)
Itt ugyanis ha nincs használatban a usernév, akkor nem lesz definiálva a $username_used változó!
Neked még a Hello World programnál kellene tartanod, hogy egyáltalán megértsd, hogy is működik egy program, meg maga a PHP, majd utána próbálkozz ilyesmivel!





További kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!