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

1. Facecontrol (17.03.2011 / 21:39)
Хочу написать регистрацию и авторизацию на файлах,но незнаю с чего начать,и с помощью каких функций и т.д. её вообще пишут.Я в программировании вообще новичек,так что прошу помощи вас уважаемые кодеры.

2. Виталий (17.03.2011 / 21:43)
1.Начни с изучения некоторых функций для роботы с файлами
http://php.su/lessons/?lesson_8
http://php.su/functions/?page=cat_filesystem
А лучше пиши с использованием БД...но ето уже твое дело smile

3. Facecontrol (17.03.2011 / 22:08)
2. id1, ну функции для работы с файлами это такие как file() fopen() fwrite() ты эти имеешь ввиду,или ещё какието?Если только эти,то я с ними уже знаком.Ещё что нужно?

4. Роман (17.03.2011 / 22:22)
идея, как организовать хранение данных=)
все данные в 1 файле или на каждый профиль свой файл или папка smile

5. Facecontrol (17.03.2011 / 22:26)
Nominal (17 Марта 2011 / 21:22)
идея, как организовать хранение данных=)
все данные в 1 файле или на каждый профиль свой файл или папка smile
Не понял что ты имеешь ввиду?

6. Роман (17.03.2011 / 22:37)
то есть ты сам должен понять для себя, как пистаь код) как данные храниться будут, в каком виде

7. Валерий (18.03.2011 / 07:21)
Да, чисто для себя логику продумай.. Что где будешь хранить.. В каком файле что будет.. Когда придумаешь, сделаешь без проблем.

8. Денис (18.03.2011 / 07:41)
или посмотри код любого движка на файлах и сделай подобную регу ))

9. Андрей (18.03.2011 / 09:26)
Помоему тут был скрипт регистрации . Поищи в скриптах

10. Николай (18.03.2011 / 09:41)
Тут куча регистраций и авторизаций http://visavi.net/load/down.php?cid=14&

11. KOZZ (18.03.2011 / 09:55)
автор вообще странный тип. он все подряд хочет написать, но никак мануалы читать не хочет.
все сразу и без усилий не бывает

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

12. KOZZ (18.03.2011 / 10:08)
ах да, еще implode().
скрипт регистрации - это банальный скрипт дозаписи в файл новой строки, я хз что еще проще может быть, даже для новичка, который хоть капельку почитает мануалы и поразбирает скрипты.

13. ★☆ ИгRok™ ☆★ (18.03.2011 / 17:49)
автор,советую тоже использовать бд. Так на много проще,например:
<?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;

14. Facecontrol (18.03.2011 / 19:41)
Ну я хочу сначала научиться на файлах.Вот нашёл скрипт,так всё понятно всё просто,только вот не пойму такое
<?
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>


15. ramzes (18.03.2011 / 21:29)
14. Facecontrol, плохой код, плохая организация хранения данных.
И код не полный, или не рабочий,
что вероятнее, копипаст и ты его не понимаешь.

16. Facecontrol (18.03.2011 / 22:07)
Я его вроде понял только не могу понять про flock() зачем её использовать,ведь можно же и без этой функции...

17. ramzes (18.03.2011 / 23:22)
за тем что при множественных одновременных обращениях к файлу его может просто затереть например, или покорежить содержимое

Добавлено через 05:30 сек.
пример
в файле число 5
функция плюсует +1
в файле сохраняеся 6
но
если в этот момент еще кто то пишет в этот файл
(5 + 1 = 6 + твой + 1)
без блокировки будет так
5 + 1 = 6, и твои 5 + 1 = 6
в итоге в файле записанно 6 т.к. ты открывал с числом 5 а когда записывал в файле уже стало 6, но у тебя то в переменной 5, и ты пишешь не 6+1 а 5+1
вот что бы такого не случалось, файл блокируется, все обращения становятся в очередь
__________________
как то так примерно
фиговый из меня учитель)))

18. Facecontrol (19.03.2011 / 00:36)
Да не нормальный вроде учитель,теперь понял.Спасибо,значит буду его использовать. smile

19. Facecontrol (20.03.2011 / 19:48)
У меня проблема с регистрацией,вообщем написал такой скрипт
Файл 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

20. Роман (20.03.2011 / 20:35)
не explode('','' ,$data[$i]) а explode('',$data[$i]) smile и это только с первого взгляда)

21. Facecontrol (20.03.2011 / 21:07)
Всё равно тоже самое

22. ramzes (20.03.2011 / 23:20)
Вы че сговорились?
кто будет проверять наличие данных и переменных?
больше читайте и примеров смотрите, меньше ***кодить будете

23. Facecontrol (20.03.2011 / 23:33)
22. ramzes,
так вроде ж проверял с помощью empty

24. ramzes (20.03.2011 / 23:37)
$name=$_GET['name'];
$password=$_GET['password'];
где?
$dat = explode(',', $data[$i]);
вот так

Добавлено через 05:13 сек.
<? 
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>'; 

if(!empty($_GET['password']) and !empty($_GET['name'])){ 

$name = htmlspecialchars($_GET['name']); 
$password = htmlspecialchars($_GET['password']); 
$data = file('reg.txt'); 
$c = count($data); 
$aut = false;
for($i; $i<$c; $i++){ 
$dat = explode(',', $data[$i]); 
if($name==$dat[0] and $password==$dat[1]) {
$aut = true; //создаем постоянную переменную что бы по сто раз не запускать наш велосипед
}
}

if($aut){
echo 'Здравствуйте '.$name.', вы успешно авторизовались';
}

?>


URL: https://visavi.net/topics/19851