Здравствуйте, прочитал гайд по регистрации http://www.php.ru/forum/viewtopic.p...E2%F2%EE%F0%E8%E7%E0%F6%E8%FF+%F4%E0%E9%EB%E5, сама регистрация проходит успешно и пользователь регистрируется. Проблема в следующем: у меня учётные записи с данными хранятся в отдельных папках, и для каждого пользователя нужен свой вход(а в этой регистрации он общий). Я решил использовать внешний файл регистрации как проверку(чтобы например не было повторение пользователей), а в каждую папку пользователя добавить по ещё одному файлу users.php(файл с данными пользователей) с только ОДНОЙ записью его логина/пароля, чтобы никто больше не мог зайти к нему. Проблема состоит в том, что я ну никак не могу добавить файл в папку с пользователем с лично его логином/паролем... Может есть кто в этом разбирается?
надо чтоб в папку которая равна $login посылались данные также, как в корневой, вот эта функция PHP: function set_serial($arr,$name,$dir='') { $arr="<?die();?>".serialize($arr); $fp=fopen(($dir?"$dir/{$name}.php":"{$name}.php"),"w"); fputs($fp,$arr); fclose($fp); $fp2=fopen("$papka/users.php", "w"); fputs($fp2,$arr); fclose($fp2); } $fp это автора, а $fp2 моё. на самом верху указал PHP: $papka=$_SESSION['user']['login']; $login=$_POST['login']; $pass1=$_POST['pass1']; $pass2=$_POST['pass2']; Уже всё испробовал, такое ощущение, что он не видит $papka и $login
да, Код (Text): [20-Aug-2011 15:20:32] PHP Warning: fopen(/users.php) [<a href='function.fopen'>function.fopen</a>]: failed to open stream: Permission denied in /home/u723636318/public_html/login.php on line 28 [20-Aug-2011 15:20:32] PHP Warning: fputs(): supplied argument is not a valid stream resource in /home/u723636318/public_html/login.php on line 29 [20-Aug-2011 15:20:32] PHP Warning: fclose(): supplied argument is not a valid stream resource in /home/u723636318/public_html/login.php on line 30
да вроде они всегда были. а тут вдруг пропали... мне кажется, fopen(/users.php) он не может открыть файл и создать его, т.к. папка не указана, точнее переменная не работает...... PHP: <? /* (C) Mr.M.I.T. [url=http://mit-home.nov.ru]http://mit-home.nov.ru[/url] */ session_start(); $papka=$_SESSION['user']['login']; $login=$_POST['login']; $pass1=$_POST['pass1']; $pass2=$_POST['pass2']; $do=$_GET['do']; $error=false; $_SESSION['user']=!$_SESSION['user']?array('group'=>"guest"):$_SESSION['user']; function get_serial($name,$dir='') { $res=array(); $fp=@file_get_contents(($dir?"$dir/{$name}.php":"{$name}.php")); if ($fp) { $fp=str_replace("<?die();?>","",$fp); $res=unserialize($fp); } return $res; } function set_serial($arr,$name,$dir=''){ $arr="<?die();?>".serialize($arr); $fp=fopen(($dir?"$dir/{$name}.php":"{$name}.php"),"w"); fputs($fp,$arr); fclose($fp); $fp2=fopen("$papka/users.php", "w"); fputs($fp2,$arr); fclose($fp2); } switch($do) { case"out": unset($_SESSION['user']); session_destroy(); if (!headers_sent()) { setcookie("save",'',time()+999999,'/'); } header("Location:".($_SERVER['HTTP_REFERER']?$_SERVER['HTTP_REFERER']:$_SERVER['PHP_SELF'])); break; case"register": // если do=register, выводим регистрацию if (isset($login) && isset($pass1) && isset($pass2)) { if (!empty($login) && !empty($pass1) && !empty($pass2)) { $users=get_serial('users'); $reallogin=$login; $login=md5(strtolower($login)); if (!$users[$login]) { if (strlen($pass1)>=4) { $pass1=md5($pass1); $pass2=md5($pass2); if ($pass1==$pass2) { $users[$login]=array(); $users[$login]['login']=htmlspecialchars($reallogin); $users[$login]['pass']=$pass1; set_serial($users,'users'); $error="Вы успешно зарегистрированны"; header("Refresh:3;url=".$_SERVER['PHP_SELF']); }else { $error="Ошибка: Пароли не совпадают"; } }else { $error="Ошибка: Минимальная длина пароля 4 символа"; } } else { $error="Ошибка: Такой пользователь уже существует"; } }else { $error="Ошибка: Обязательные поля нужно заполнить"; } } print " <html> <head> <title>TST - Вход</title> <link rel=stylesheet href=config-files/style.css type=text/css> </head> <body> <table width=100% height=50 class=tst><tr> <td width=5%><img src=config-files/images/logo.png name=aaa border=0 onMouseOver=aaa.src='config-files/images/logo-a.png' onMouseOut=aaa.src='config-files/images/logo.png'></td> <td width=75%><a href=index.php>Главная</a> <a href=login.php?do=register>Регистрация</a> <a href=about.php>О нас</a></td></tr></table> <br><br><br><br><br> <form method=post> <table width=50% height=600 align=center class=reg> <tr><td colspan=2><div align=center><font size=5>$error</font></div></td></tr> <tr><td>Логин:</td><td><input type=text name=login></td></tr> <tr><td>e-mail:</td><td><input type=text name=email></td></tr> <tr><td>Пароль:</td><td><input type=password name=pass1></td></tr> <tr><td>Повторите пароль:</td><td><input type=password name=pass2></td></tr> <tr><td>Династия:</td><td><input type=text name=dynasty></td></tr> <tr><td colspan=2><div align=center><input type=submit value=Создать class=button></div></td></tr> </table></form> </body> </html> "; break; default: if ($_SESSION['user']['group']=='guest') { $_COOKIE['save']=$_COOKIE['save']?unserialize($_COOKIE['save']):""; $login=!$_COOKIE['save']['login'] || isset($_POST['login'])?$_POST['login']:$_COOKIE['save']['login']; $pass=!$_COOKIE['save']['pass'] || isset($_POST['pass'])?$_POST['pass']:$_COOKIE['save']['pass']; if (isset($login) && isset($pass)) { if (!empty($login) && !empty($pass)) { if (!$_COOKIE['save']['pass'] || isset($_POST['pass'])) $pass=md5($pass); $users=get_serial('users'); $login=md5(strtolower($login)); if ($users[$login]) { if ($users[$login]['pass']==$pass) { $_SESSION['user']['group']='user'; $_SESSION['user']['login']=$users[$login]['login']; if (!headers_sent() && $_POST['save']) { $cook=array(); $cook['pass']=$pass; $cook['login']=$users[$login]['login']; setcookie("save",serialize($cook),time()+999999,'/'); } }else { $error="Ошибка: Неверный Пароль"; } }else { $error="Ошибка: Такого Пользователя не существует"; } }else { $error="Ошибка: Обязательные поля нужно заполнить"; } } } if ($_SESSION['user']['group']=='guest') { print " <html> <head> <title>TST - Вход</title> <link rel=stylesheet href=config-files/style.css type=text/css> </head> <body> <table width=100% height=50 class=tst><tr> <td width=5%><img src=config-files/images/logo.png name=aaa border=0 onMouseOver=aaa.src='config-files/images/logo-a.png' onMouseOut=aaa.src='config-files/images/logo.png'></td> <td width=75%><a href=index.php>Главная</a> <a href=login.php?do=register>Регистрация</a> <a href=about.php>О нас</a></td></tr></table> <br><br><br><br><br> <form method=post> <table width=50% height=600 align=center class=reg> <tr><td colspan=2><div align=center><font size=5>$error</font></div></td></tr> <tr><td>Логин:$papka</td><td><input type=text name=login></td></tr> <tr><td>Пароль:</td><td><input type=password name=pass></td></tr> <tr><td>Запомнить?</td><td><input type=checkbox name=save value=1 class=checkbox></td></tr> <tr><td colspan=2><div align=center><input type=submit value=Вход class=button></div></td></tr> </table></form> </body> </html> "; }else { header("location:{$_SESSION['user']['login']}/admin.php"); } } ?>
Вот немного разобрался... PHP: function set_papka($arr,$name,$papka='Night'){ $arr="<?die();?>".serialize($arr); $fp=fopen(($papka?"$papka/{$name}.php":"{$name}.php"),"w"); fputs($fp,$arr); fclose($fp);} Эта функция следует после первой function set_serial, что записывает файл users.php в корневую директорию... $papka в функции сейчас имеет имя и записывается правильно, как надо, но как присвоить ей значение логина? всё перепробовал, будто все переменные вообще значат NULL, хотя как-то создают записи в users.php
спасибо, но не помогло... точнее, вверху сайта пишет array(1) { ["user"]=> array(1) { ["group"]=> string(5) "guest" } } и всё вроде также...