Хочу написать регистрацию на файлах

Печать RSS
278

K

Транклюкаторщик
0
автор вообще странный тип. он все подряд хочет написать, но никак мануалы читать не хочет.
все сразу и без усилий не бывает

Добавлено через 09:09 сек.
3. Facecontrol, file_get_contents(), file_put_contents(),mysql_escape_string() + htmlentities() либо htmlspecialchars().
умение работы с формами, массивами, $_GET $_POST, желательно с сессиями
K

Транклюкаторщик
0
ах да, еще implode().
скрипт регистрации - это банальный скрипт дозаписи в файл новой строки, я хз что еще проще может быть, даже для новичка, который хоть капельку почитает мануалы и поразбирает скрипты.

★☆Pro100Поэт☆★
0
автор,советую тоже использовать бд. Так на много проще,например:
<?php

function f($str)
{
return trim(mysql_real_escape_string(htmlentities($str, ENT_QUOTES, 'UTF-8')));
}
// фильт пользовательских данных
if(!isset($_POST['login']) OR !isset($_POST['pass']))
{
echo '<form action="?" method="post" />
* Логин:<br /><input type="text" name="login" /><br />
* Пароль:<br /><input type="text" name="pass" /><br />
<input type="submit" value="Регистрация&#187;" />
</form><br />'; // регистрационная форма
}
else
{
$login = f($_POST['login']);
$pass = f($_POST['pass']);

if(empty($login) OR empty($pass)) die('<b>Логин</b> и <b>Пароль</b> являются обязательными для заполнения.'); // проверяем,заполнены ли обязательные поля

$q = mysql_query('SELECT login FROM users WHERE login = "'.$login.'"');

if(mysql_num_rows($q) != 0) die('Логин '.$login.' уже занят.'); // проверка на занятость логина

mysql_query('INSERT INTO users SET login = "'.$login.'", pass = "'.$pass.'"'); // запись данных в таблицу

echo 'Вы успешно зарегистрированы!<br />
Ваш логин: '.$login.'<br />
Пароль: '.$pass.'<br />';
}
?>

Добавлено через 01:52 сек.
таблица будет выглядеть так:
CREATE TABLE `users` (
`id` int(10) NOT NULL auto_increment,
`login` varchar(20) NOT NULL,
`pass` varchar(60) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=7;
Изменил: ★☆ ИгRok™ ☆★ (18.03.2011 / 17:59)
F
Автор
Землянин
0
Ну я хочу сначала научиться на файлах.Вот нашёл скрипт,так всё понятно всё просто,только вот не пойму такое
<?
if ( isset ($name) AND isset ($password) ){$data = File ("users.db");
for ($i=0;$i<count($data);$i++) {$dat = explode (";", $data[$i]);
if ($name == $dat[0]){echo "<b><center>Такой пользователь уже есть !";exit;}}
$pass = md5 ($password);
$fp = fopen ("users.db", "a");
flock ( $fp, 1);//зачем вообще это использовать?Я прочитал про эту функцию,так и ничего не понял,какоето запирание файлов,а что это и зачем оно немогу понять...
fputs ($fp, $name.";".$pass."\r\n");
flock ($fp, 3);//и это тоже самое
fclose ($fp);
echo "<b><center><h2>Спасибо за регистрацию !";exit;}
?>
<html><body><center><b><h3>РЕГИСТРАЦИЯ</h3></b></center><p><form action=<?php print $PHP_SELF ?> method=post><table><tr><td><center>Ваше имя<td><input type=text size=15 name=name></tr><br><tr><td><center>Ваш пароль<td><input type=text size=15 name=password></tr><br></table><p><input type=submit value="Зарегистрироваться"></form></body></html>

2000 лет д.н.э.
0
14. Facecontrol, плохой код, плохая организация хранения данных.
И код не полный, или не рабочий,
что вероятнее, копипаст и ты его не понимаешь.
F
Автор
Землянин
0
Я его вроде понял только не могу понять про flock() зачем её использовать,ведь можно же и без этой функции...

2000 лет д.н.э.
0
за тем что при множественных одновременных обращениях к файлу его может просто затереть например, или покорежить содержимое

Добавлено через 05:30 сек.
пример
в файле число 5
функция плюсует +1
в файле сохраняеся 6
но
если в этот момент еще кто то пишет в этот файл
(5 + 1 = 6 + твой + 1)
без блокировки будет так
5 + 1 = 6, и твои 5 + 1 = 6
в итоге в файле записанно 6 т.к. ты открывал с числом 5 а когда записывал в файле уже стало 6, но у тебя то в переменной 5, и ты пишешь не 6+1 а 5+1
вот что бы такого не случалось, файл блокируется, все обращения становятся в очередь
__________________
как то так примерно
фиговый из меня учитель)))
F
Автор
Землянин
0
Да не нормальный вроде учитель,теперь понял.Спасибо,значит буду его использовать. smile
F
Автор
Землянин
0
У меня проблема с регистрацией,вообщем написал такой скрипт
Файл rеg.php
<?
echo '<form action="reg.php" method="GET">
<input type="text" name="name" size="50">
<input type="password" name="password" size="20">
<input name="Submit" type="Submit" value="ok"></form>';
$name=$_GET['name'];
$password=$_GET['password'];
if(!empty($name) and !empty($password)){
$data=file('reg.txt');
$c=count($data);
for($i;$i<$c;$i++){
$dat=explode('','' ,$data[$i]);
if($name==$dat[0]){
echo 'такое имя есть';
exit;}}
$fp=fopen('reg.txt',"a+");
flock($fp,1);
fwrite($fp,$name.";".$password."\n");
flock($fp,3);
fclose($fp);
echo 'you reg';
exit;}
?>
Файл аut.php
<?
echo 'Для зарегистрированных';
echo '<form action="aut.php" method="GET">
Введите имя
<input type="text" name="name" size="50">
Введите пароль
<input type="password" name="password" size="20">
<input name="Submit" type="Submit" value="войти"></form>';
$name=$_GET['name'];
$password=$_GET['password'];
if(!empty($name) and !empty($password)){
$data=file('reg.txt');
$c=count($data);
for($i;$i<$c;$i++){
$dat=explode('','' ,$data[$i]);
if($name==$dat[0] and $password==$dat[1])
{echo "Здравствуйте $name. вы успешно авторизовались";
exit;}}}
?>
Но когда я пытаюсь зайти,то не получается зайти под своим ником и пишет
Warning: explode(): Empty delimiter. in/home/s/saitiick.h18.ru/WWW/aut.phpon line15

[Developer]
0
не explode('','' ,$data[$i]) а explode('',$data[$i]) smile и это только с первого взгляда)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск