Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP ověření zdali je uživatel v databázi

Dobrý den, mám stránku kde se registrují uživatelé registrace.php:

<?php
 include('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 '<br>Účet '.$_POST['username'].' byl vytvořen...<br><br> Můžete se přihlásit<br><br><br><br><br><br>';
 $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('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">
 <table border="0">
 <tr>
 <td><h2>Registrace</h2></td>
 </tr>
 <tr>
 <td>
 <!- collect username and password information via form ->
 <form action="" method="post">
 Uživatelské jméno:<br><input name="username" type="text" value="" /> Max. 16 znaků<br>
 Heslo:<br><input name="password" type="text" value="" /><br>
 <input name="submit" type="submit" value="Vytvořit účet" />
 </form>
 </td>
 </tr>
 </table>
 </table>

A stránku kde se zapisují data registrace, users.php:

 <?php
 /*
 * @package AJAX_Chat
 * @author Sebastian Tschan
 * @copyright (c) Sebastian Tschan
 * @license GNU Affero General Public License
 * @link [url]https://blueimp.net/ajax/[/url]
 */

 // 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);

 //remote created from 89.202.224.76
 $users[5] = array();
 $users[5]['userRole'] = AJAX_CHAT_USER;
 $users[5]['userName'] = 'Lukccaa';
 $users[5]['password'] = 'aaaaaaaa';
 $users[5]['channels'] = array(0,1);

 //remote created from 89.202.224.76
 $users[6] = array();
 $users[6]['userRole'] = AJAX_CHAT_USER;
 $users[6]['userName'] = 'Lukccaa';
 $users[6]['password'] = 'bbbbbbbb';
 $users[6]['channels'] = array(0,1);

 //remote created from 89.202.224.76
?>

Problém je že když se zaregistruji 2x se stejnou přezdívkou a dám jiné heslo tak se mohu přihlašovat obouma účtama. Co mám doplnit aby se při registraci pokud je jméno již zaregistrované oběvilo "Tato přezdívka je obsazena" . Případné info ještě doplním. Snad jsem to napsal srozumitelně. Děkuji Vám za odpověď

Předmět Autor Datum
Dělá se to takto: Při vytváření účtu necháš vytáhnout jméno z DB. A jen v případě, kdy není naleze…
Flash_Gordon 31.12.2012 18:25
Flash_Gordon
Děkuji Vám mnohokrát. Můžete mi prosím ten kód spojit s tím mím kódem? Jste moc hodný.
Krepelak Jan 31.12.2012 18:28
Krepelak Jan
Mmm. Tam to máš řešené přes soubor, ne přes DB. Nezbývá tedy, než procházet soubor users.php řádek…
Flash_Gordon 31.12.2012 18:38
Flash_Gordon
Před: $file_edit = fopen('chat/lib/data/users.php', 'r+'); fseek($file_edit, -3,SEEK_END); fwrite($…
Flash_Gordon 31.12.2012 18:49
Flash_Gordon
Celej obsah souboru users.php jsem vypsal nahoře. Jsou tam jména i hesla.
Krepelak Jan 31.12.2012 18:40
Krepelak Jan
Teda vy jste skvělej. Opravdu to funguje. Akorát mi to píše oboje najednou: Účet Krepelak byl vytvo…
Krepelak Jan 31.12.2012 18:56
Krepelak Jan
Tak já nemám žádný překladač php. Dělám to z hlavy bez jakéhokoliv testu nebo uvažování. Změň původ…
Flash_Gordon 31.12.2012 19:04
Flash_Gordon
Děkuji mnohokrát. Vše funguje najedničku. Mít klobouk tak ho smeknu. Děkuji, umíte to skvěle poslední
Krepelak Jan 31.12.2012 19:10
Krepelak Jan

Dělá se to takto:

Při vytváření účtu necháš vytáhnout jméno z DB.

A jen v případě, kdy není nalezeno pokračuješ dále.

Kontroluješ tedy počet záznamů v DB.

$query ='SELECT jmeno FROM table WHERE jmeno = "'.$users[5]['userName'].'"';
$result = mysql_query($query);

if(mysql_num_rows($result)){
   die('Toto jmeno jiz existuje, pouzij jine.');
}

// Tady pokracuje zapsani uctu do DB

Před:

$file_edit = fopen('chat/lib/data/users.php', 'r+');
fseek($file_edit, -3,SEEK_END);
fwrite($file_edit, $new_user_information);
fclose($file_edit);

umísti:

$handle = fopen('chat/lib/data/users.php', 'r');
while (($buffer = fgets($handle)) !== false) {
    if (strpos($buffer, $_POST['username']) !== false) {
       die('Jmeno jiz existuje, pouzij jine!');
    }      
}
fclose($handle);

Mimochodem chybí ti tam v ukázce závorka u fopen('chat/lib/data/users.php', 'r+');

Teda vy jste skvělej. Opravdu to funguje. Akorát mi to píše oboje najednou:

Účet Krepelak byl vytvořen...

Můžete se přihlásit

Jmeno jiz existuje, pouzij jine!

Nešlo by udělat když jméno již existuje tak aby to nevypsalo i to:

Účet Krepelak byl vytvořen...

Můžete se přihlásit

Tak já nemám žádný překladač php. Dělám to z hlavy bez jakéhokoliv testu nebo uvažování.

Změň původní horní

if ($_POST['username'])
{
//if user entered a name
}

na

if ($_POST['username'])
{
$handle = fopen('chat/lib/data/users.php', 'r');
while (($buffer = fgets($handle)) !== false) {
    if (strpos($buffer, $_POST['username']) !== false) {
       fclose($handle);
       die('Jmeno jiz existuje, pouzij jine!');
    }      
}
fclose($handle);
}

Můžeš (ale taky nemusíš) použít původní soubor.

Zpět do poradny Odpovědět na původní otázku Nahoru