За последние 24 часа нас посетили 36506 программистов и 1702 робота. Сейчас ищут 1149 программистов ...

Создание спортивного дневника

Тема в разделе "PHP для новичков", создана пользователем Stasrot1, 29 сен 2007.

  1. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    PHP:
    1. <?php
    2.  else (isset($_POST['neverno']) && isset($verno==0)) {
    3.  echo 'Введите все данные заново! Вы где то ошиблись!'
    4.   //и здесь еще что то, что обнуляло бы весь массив пост. и возвращало бы на поаторное заполнение формы.
    5.  };
    6. ?>
    1. $verno используется почему-то и как переменная, и как массив ($verno['1']). Что-то не то.
    2. isset($verno==0) Либо isset($verno), либо $verno==0
    3. else if(условие)
    4. echo 'Введите все данные заново! Вы где то ошиблись!';
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Luge
    Чего-то я вопрос не дописал.

    Допустим, есть переменная $var = "bla'bla".
    Я её $var = mysql_real_escape_string($var). После чего запускаю в базу. Там она выглядит как "bla\'bla".
    Получается, при выводе из базы надо stripslashes (удалить экранирование)?
     
  3. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Kreker
    ты б из консоли mysql посмотрел на то как оно хранится. mysql_real_escape_string подготавливает переменную для запроса в mysql_query. В базу заносится «bla'bla» без слэша
     
  4. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Спасибо. Я читал, что escape_string только подготавливает данные, а в базе они будут в первоначальном виде. Просто у меня экранировалось, видимо, магические кавычки шалят. Не думал, что они и при работе с базой будут действовать.
     
  5. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Kreker
    если данные из формы приходят, то скорее всего.
    PHP:
    1. <?php
    2.     foreach ($_POST as $var=>$val)
    3.         $_POST[$var]=stripslashes($val);
    4.     foreach ($_GET as $var=>$val)
    5.         $_GET[$var]=stripslashes($val);
    6. }
    7.  
    8. ?>
     
  6. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Luqe Опять у меня получается ерунда какая то! Переделал скрипт и весь его ниже приведу, вот что он у меня делает: Заходиш на страницу первый раз он открывает первую форму, и выводит строчку мол "Вы зашли впервые или вы потеряли данные из первой формы в ходе выполнения скрипта"
    Заполняеш форму и жмеш кнопку, открывается опять пустая форма, а под ней как и ожидается предупреждение- вопрос: " Вы ввели такие то данные: и все они перечисляются. а чуть ниже появляется две кнопочки ДА и НЕТ. Вот если жмеш ДА то скрипт выводит надпись упомянутую выше: " Вы здесь впервые или потеряли данные из первой формы!"
    Если жмеш НЕТ, то скрипт выводит "Вы где то ошиблись! ВВедите данные заново!"
    Если же проверку на наличие значений из первой формы перед заносом данных в БД убрать то скрипт сообщает что все занесено в базу, но при просмотре БД там только пустые значения, т.е. новый соавтор в базе появляется но ни имя ни адрес в базе нет! Из всего я понял, что как то теряются данные из первой формы, собственно я такие сообщения и написал, после того как я так подумал. Как оставить эти данные после того как нажал кнопку ДА, так как до этого момента эти данные как я понимаю есть.
    Выручай пожалуйста! Уже с вечера вожусь с этим скриптом, не могу понять как решить проблему!
    PHP:
    1. <?php
    2. include "conf.php";
    3. echo 'Здравствуйте, воспользуйтесь этой формой чтобы ввести данные о себе как о соавторе проекта <strong>SportAnalayzer</strong>!';
    4.  
    5. echo '<form  method="POST">
    6. Имя соавтора: <input type=text name="name_avtora" size="37" maxlength="25" value=""><br>
    7. E-mail соавтора: <input type=text name="amail_avtora" value=""><br>
    8. URL соавтора: <input type=text name="URL_avtora" value=""><br>
    9. Пол соавтора (выбирете из списка):<br>
    10. <input type=radio name="pol_avtora" value="m">Мужской<br>
    11. <input type=radio name="pol_avtora" value="w">Женский<br>
    12. Тип соавтора (выберите из списка):<br>
    13. <input type=radio name="tip_avtora" value="програмист">Програмист<br>
    14. <input type=radio name="tip_avtora" value="дизайнер">Дизайнер<br>
    15. <input type=radio name="tip_avtora" value="локализатор">Локализатор, тот кто занимается переводом системы на другие языки<br>
    16. <input type=radio name="tip_avtora" value="спонсор">Спонсор<br>
    17. <input type=radio name="tip_avtora" value="нет">Вы не подходите ни под один из вариантов.<br><br>
    18. <input type=submit value="Нажмите кнопку, чтобы запустить сценарий!">
    19. </form>
    20. ';
    21.  if(isset($_POST['name_avtora']) && isset($_POST['amail_avtora']) && isset($_POST['URL_avtora']) && isset($_POST['pol_avtora']) && isset($_POST['tip_avtora']))
    22. {
    23.         $username =htmlspecialchars($_POST['name_avtora']);
    24.         $email = htmlspecialchars($_POST['amail_avtora']);
    25.         $URL = htmlspecialchars($_POST['URL_avtora']);
    26.         $pol = htmlspecialchars($_POST['pol_avtora']);
    27.         $tip = htmlspecialchars($_POST['tip_avtora']);
    28.   echo 'Вы только что внесли следующие данные, проверьте правильность введенных вами данных!:<br>';
    29.         echo '<p>Имя соавтора: '.$username.'</p>';
    30.         echo '<p>E-mail соавтора: '.$email.'</p>';
    31.         echo '<p>URL соавтора: '.$URL.'</p>';
    32.         echo '<p>Пол соавтора: '.$pol.'</p>';
    33.       echo '<p>Тип соавтора: '.$tip.'</p>';  
    34.    
    35.       echo '
    36.      <form  action "" method="POST">
    37.      <input type=submit name="verno"  value="Верно.">
    38.      <input type=submit name="neverno"  value="Неверно.">
    39.      </form>';
    40.       }
    41.      
    42.       if
    43.       (isset($_POST['verno']) && isset($_POST['name_avtora']) && isset($_POST['amail_avtora']) && isset($_POST['URL_avtora']) && isset($_POST['pol_avtora']) && isset($_POST['tip_avtora']))
    44.             {
    45.   $sql = "insert into avtors (tip_avtora, pol_avtora, name_avtora, amail_avtora, URL_avtora) values
    46.          ('".mysql_real_escape_string($_POST["tip_avtora"])."',  '".mysql_real_escape_string($_POST["pol_avtora"])."',  '".mysql_real_escape_string($_POST['name_avtora'])."',
    47.  '".mysql_real_escape_string($_POST["amail_avtora"])."',
    48.  '".mysql_real_escape_string($_POST["URL_avtora"])."')";
    49.  
    50.   $resultinsert = mysql_query($sql);
    51.   if ($resultinsert){
    52.               echo "Все внесено в БД! Поздравляем!";
    53.          } else {
    54.               echo "Возникла следующая проблема: ".mysql_error();
    55.          }
    56.         }
    57. else if (isset($_POST['neverno']))
    58. {
    59.   echo 'Введите все данные заново! Вы где то ошиблись!';   //и здесь еще что то, что обнуляло бы весь массив пост. и возвращало бы на поаторное заполнение формы.
    60.  }
    61.         else if
    62.       (!isset($_POST['name_avtora']) && !isset($_POST['amail_avtora']) && !isset($_POST['URL_avtora']) && !isset($_POST['pol_avtora']) && !isset($_POST['tip_avtora']))
    63.             {
    64.   echo "Вы либо открыли этот скрипт впервые либо в ходе выполнения скрипта потеряли значения из первой формы!";
    65.         }
    66.        
    67.  ?>
    :-(
     
  7. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Я так понимаю то что под этой строчкой и то что над ней это одно и тоже или почти одно и тоже?
    PHP:
    1. <?php
    2. function strips(&$el) {
    3.   if (is_array($el))
    4.     foreach($el as $k=>$v)
    5.       strips($el[$k]);
    6.   else $el = stripslashes($el);
    7. }
    8.   strips($_GET);
    9.   strips($_POST);
    10.   strips($_COOKIE);
    11.   strips($_REQUEST);
    12.   if (isset($_SERVER['PHP_AUTH_USER'])) strips($_SERVER['PHP_AUTH_USER']);
    13.   if (isset($_SERVER['PHP_AUTH_PW']))   strips($_SERVER['PHP_AUTH_PW']);
    14. }?>
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    Stasrot1
    когда выводишь данные для проверки, то либо в форме с кнопками «верно/неверно» делай скрытые поля
    echo '<input type="hidden" name="name_avtora" value="'.$_POST['name_avtora'].'">'; и т.д.
    либо вноси в сессию (в начале файла, до любого вывода ставишь session_start() и $_SESSION['name_avtora']=$_POST['name_avtora']; Обращаешься так же как и к POST, т.е. просто $_SESSION[name_avtora])
    практически да. В твоём варианте обрабатываются ещё $_COOKIE, $_REQUEST и частично $_SERVER и предусмотрено наличие влохенных массивов
     
  9. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Я применил сессию. Все заработало и все стало заносится в БД. Однако мне это не очень нравится так как когда я не ввожу какие то данные то в БД вносится либо то что прописанов структуре таблицы по умолчанию, либо ничего не вносится, т. е. те поля которые незаполнил те в бд не заносятся, это как я понимаю нормально. Но я захотел чтобы была проверка все ли внес пользователь, особенно важно чтобы он внес имя и емайл. Калдовал я с кодом и так и сяк, чуть ли не с бубном уже, но так ни чего и не добился! Поэтому сейчас выкладываю опять весь свой сценарий, хотя форму первую можно и опустит наверное. В этом скрипте остались кусочки моего "колдовства и забегов с бубном" но они ни как не выполняются, насколько я понимаю.
    Подскажи как организовать проверку введенных данных на наличие, ведь я ее вроде делаю? Потом чтобы только выводил предупреждение о том что правильно вы ввели или нет, а потом только заносил в БД.
    У меня получалось только так, что он мне сообщал что не все введено, но все равно все заносил в БД. Вроде понятно изложил?
    Вот код:
    PHP:
    1. <?php
    2. include "conf.php";
    3. echo 'Здравствуйте, воспользуйтесь этой формой чтобы ввести данные о себе как о соавторе проекта <strong>SportAnalayzer</strong>!';
    4.  
    5. echo '<form  method="POST">
    6. Имя соавтора: <input type=text name="name_avtora" size="37" maxlength="25" value=""><br>
    7. E-mail соавтора: <input type=text name="amail_avtora" value=""><br>
    8. URL соавтора: <input type=text name="URL_avtora" value=""><br>
    9. Пол соавтора (выбирете из списка):<br>
    10. <input type=radio name="pol_avtora" value="m">Мужской<br>
    11. <input type=radio name="pol_avtora" value="w">Женский<br>
    12. Тип соавтора (выберите из списка):<br>
    13. <input type=radio name="tip_avtora" value="програмист">Програмист<br>
    14. <input type=radio name="tip_avtora" value="дизайнер">Дизайнер<br>
    15. <input type=radio name="tip_avtora" value="локализатор">Локализатор, тот кто занимается переводом системы на другие языки<br>
    16. <input type=radio name="tip_avtora" value="спонсор">Спонсор<br>
    17. <input type=radio name="tip_avtora" value="нет">Вы не подходите ни под один из вариантов.<br><br>
    18. <input type=submit value="Нажмите кнопку, чтобы запустить сценарий!">
    19. </form>
    20. ';
    21.  
    22. if
    23.       (!isset($_POST['name_avtora']) or !isset($_POST['amail_avtora']) or !isset($_POST['URL_avtora']) or !isset($_POST['pol_avtora']) or !isset($_POST['tip_avtora']))
    24.        {
    25.   echo "Вы не заполнили какое то поле, заполните все поля!!!";
    26.                 }      
    27.  else if
    28.  (isset($_POST['name_avtora']) && isset($_POST['amail_avtora']) && isset($_POST['URL_avtora']) && isset($_POST['pol_avtora']) && isset($_POST['tip_avtora']))
    29. {
    30.         $username =htmlspecialchars($_POST['name_avtora']);
    31.         $email = htmlspecialchars($_POST['amail_avtora']);
    32.         $URL = htmlspecialchars($_POST['URL_avtora']);
    33.         $pol = htmlspecialchars($_POST['pol_avtora']);
    34.         $tip = htmlspecialchars($_POST['tip_avtora']);
    35.   echo 'Вы только что внесли следующие данные, проверьте правильность введенных вами данных!:<br>';
    36.         echo '<p>Имя соавтора: '.$username.'</p>';
    37.         echo '<p>E-mail соавтора: '.$email.'</p>';
    38.         echo '<p>URL соавтора: '.$URL.'</p>';
    39.         echo '<p>Пол соавтора: '.$pol.'</p>';
    40.       echo '<p>Тип соавтора: '.$tip.'</p>';  
    41.     $_SESSION['name_avtora']=$_POST['name_avtora'];
    42.     $_SESSION['amail_avtora']=$_POST['amail_avtora'];
    43.     $_SESSION['URL_avtora']=$_POST['URL_avtora'];
    44.     $_SESSION['pol_avtora']=$_POST['pol_avtora'];
    45.     $_SESSION['tip_avtora']=$_POST['tip_avtora'];
    46.     echo '
    47.      <form  action "" method="POST">
    48.      <input type=submit name="verno"  value="Верно.">
    49.      <input type=submit name="neverno"  value="Неверно.">
    50.      </form>';
    51.       }
    52.      
    53.       if
    54.       (isset($_POST['verno']) && isset($_SESSION['name_avtora']) && isset($_SESSION['amail_avtora']) && isset($_SESSION['URL_avtora']) && isset($_SESSION['pol_avtora']) && isset($_SESSION['tip_avtora']))
    55.             {
    56.   $sql = "insert into avtors (name_avtora, amail_avtora, URL_avtora, pol_avtora, tip_avtora) values
    57.          ('".mysql_real_escape_string($_SESSION['name_avtora'])."',
    58.           '".mysql_real_escape_string($_SESSION['amail_avtora'])."',
    59.           '".mysql_real_escape_string($_SESSION['URL_avtora'])."',
    60.           '".mysql_real_escape_string($_SESSION['pol_avtora'])."',
    61.           '".mysql_real_escape_string($_SESSION['tip_avtora'])."')";
    62.  
    63.   $resultinsert = mysql_query($sql);
    64.   if ($resultinsert){
    65.               echo "Все внесено в БД! Поздравляем!";
    66.          } else {
    67.               echo "Возникла следующая проблема: ".mysql_error();
    68.          }
    69.         }
    70. else if (isset($_POST['neverno']))
    71. {
    72.   echo 'Введите все данные заново! Вы сказали, что допустили ошибку при заполнении!';   //и здесь еще что то, что обнуляло бы весь массив пост. и возвращало бы на поаторное заполнение формы.
    73.  }
    74.     else if
    75.       (!isset($_SESSION['name_avtora']) || !isset($_SESSION['amail_avtora']) || !isset($_SESSION['URL_avtora']) || !isset($_SESSION['pol_avtora']) || !isset($_SESSION['tip_avtora']))
    76.             {
    77.   echo "Вы впервые на этой странице!!!";
    78.         }
    79.        
    80.  ?>
    :-(
     
  10. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Ну подскажите че почитать или как сделать! Ссылочку киньте. Очень нцжно это дело настроить! Вообще это будет система регистрации авторов проекта и ведение учета их пожеланий и рекомендаций, а так же кода который они внесли. А пока хочу сделать только страничку регистрации. И в связи с этим еще один вопрос: Каклучше организовать хранение пароля в БД и как его запрашивать? Хотя как запрашивать вроде ясно есть такой особый тип полей как парольные, в них вводимые символы неотображаются.
     
  11. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Спасибо за помощь! Я сам разобрался и уже сделал почти все по части этого скрипта, осталось добавить шифрование паролей и все ок,можно будет приступить к созданию таблицы для хранения изменений сделанных разработчиками!

    Выкладываю код скрипта создания БД:
    PHP:
    1. <?php
    2.  
    3. //соединяемся с базой данных
    4. include "conf.php";
    5.  
    6. $sql = 'CREATE TABLE `avtors` ('
    7.         . ' `avtor_ID` smallint(4) unsigned NOT NULL auto_increment,'
    8.         . ' `tip_avtora` enum(\'програмист\',\'дизайнер\',\'локализатор\',\'спонсор\',\'нет\') default \'нет\','
    9.         . ' `pol_avtora` enum (\'m\',\'w\',\'нет\')  default \'нет\','
    10.         . ' `name_avtora` varchar(255) default \'фамилия имя отчество\','                             . ' `URL_avtora` char(250),'
    11.         . ' `amail_avtora` char(250),'
    12.         . ' `password` char(35) NOT NULL,'
    13.         . ' PRIMARY KEY (`avtor_ID`)'
    14.         . ' ) ENGINE=InnoDB DEFAULT CHARSET=cp1251 COMMENT=\'таблица с данными авторов и тех ктопомагает проекту!\' AUTO_INCREMENT=1 ;';
    15.  
    16.  
    17.  
    18. $sqlinsert = 'INSERT INTO
    19. `avtors`
    20. (`avtor_ID`, `tip_avtora`, `pol_avtora`, `name_avtora`, `URL_avtora`, `amail_avtora`, `password`)
    21.               VALUES
    22. (\'\', \'програмист\', \'m\', \'Станислав или Stasrot1\', \'http://www.albatros1.ru\', \'пр.вапр@ail.ru\', \'111km\');';
    23.  
    24. mysql_query($sqlinsert);
    25.  
    26. ?>
    27.  
    28.  
    29.  
    Вот теперь скрипт выводящий данные из БД и структурирующий по таблице:

    PHP:
    1. <?php
    2. //соединяемся с базой данных
    3. include "conf.php";
    4.  
    5. $bgcolor2 = "#C08509";
    6. $ath=mysql_query("select * from avtors;");
    7.  
    8. if($ath)
    9. {
    10. //Определяем структуру таблицы и заголовок
    11. echo"<table  width=\"100%\" border=\"1\" cellspacing=\"0\" cellpadding=\"5\" bgcolor=\"$bgcolor2\">";
    12. echo"<tr><b>Таблица разработчиков проекта <font color=\"#FF0000\">\"SportAnalayzer\"</font></b></tr>
    13. <tr>
    14.          <td>Номер автора в базе данных</td>
    15. <td>тип автора</td>
    16. <td>пол автора</td>
    17. <td>Имя автора</td>
    18. <td>URL автора<br> или личная страничка</td>
    19. <td>e-mail автора</td>
    20. </tr>";
    21. //так как запрос возвращает несколько строк, применяем цикл
    22. while(list($avtor_ID, $tip_avtora, $pol_avtora, $name_avtora, $URL_avtora, $amail_avtora) = mysql_fetch_row($ath))
    23. {
    24. echo"<tr>
    25.          <td>$avtor_ID</td>
    26. <td>$tip_avtora</td>
    27. <td>$pol_avtora</td>
    28. <td>$name_avtora</td>
    29. <td>$URL_avtora</td>
    30. <td>$amail_avtora</td>
    31. </tr>";
    32. }
    33. echo"</table>";
    34. }
    35. else
    36. {
    37. echo"<p><b>Error: ".mysql_error()."</b></p>";
    38. exit();
    39. }
    40. ?>
    А вот анкета,заполнив правильно которую, данные вносятся в БД:

    PHP:
    1. <?php
    2.  
    3. session_name(registratzia_razrabotchikov);
    4.   include "conf.php";
    5.  
    6.  
    7. $forma="<form  method=POST>
    8. Имя разработчика <font color='#FF0000'>*</font>:......... <input type=text name='name_avtora' size='37' maxlength='25' value='$_SESSION[name_avtora]'><br>
    9.  
    10. E-mail разработчика<font color='#FF0000'>*</font>:....... <input type=text name='amail_avtora' size='37' value='$_SESSION[amail_avtora]'><br>
    11.  
    12. Введите Ваш пароль<font color='#FF0000'>*</font>:..... <input type=password name='password' size='37' value='$_SESSION[password]'><br>
    13.  
    14. Ваш пароль еще раз <font color='#FF0000'>*</font>:...... <input type=password name='password2' size='37' value='$_SESSION[password2]'><br>
    15.  
    16. URL разработчика:........... <input type=text name='URL_avtora' size='37' value='$_SESSION[URL_avtora]'><br><br>
    17.  
    18. Вы (выберите из списка):<br>
    19.  
    20. <input type=radio name='tip_avtora' value='програмист'>Програмист<br>
    21.  
    22. <input type=radio name='tip_avtora' value='дизайнер'>Дизайнер<br>
    23.  
    24. <input type=radio name='tip_avtora' value='локализатор'>Локализатор<br>
    25.  
    26. <input type=radio name='tip_avtora' value='спонсор'>Спонсор<br>
    27.  
    28. <input type=radio name='tip_avtora' value='нет'>Другое...<br><br>
    29.  
    30. Ваш пол:<br>
    31. <input type=radio name='pol_avtora' value='m'>Мужской<br>
    32.  
    33. <input type=radio name='pol_avtora' value='w'>Женский<br><br>
    34.  
    35. <input type=submit name='dannie_poslani' value='Зарегистрироваться'>
    36. </form>
    37. ";    
    38.     $_SESSION['pol_avtora']=$_POST['pol_avtora'];
    39.     $_SESSION['tip_avtora']=$_POST['tip_avtora'];
    40.    
    41. if
    42. (!isset($_POST['name_avtora']) && !isset($_POST['amail_avtora']) && !isset($_POST['URL_avtora']) && !isset($_POST['password']) && !isset($_POST['password2']))
    43.         {
    44. echo "Здравствуйте! Вы находитесь на странице регистрации разработчиков проекта  <strong>SportAnalayzer</strong>!<br><br>Если Вы хотите зарегистрироваться как разработчик системы, то внимательно заполните анкету!<br>Если же Вы попали сюда случайно, то <a href=# onClick='history.back()'>вернитесь назад и не заполняйте анкету</a>!<br>Звездочкой <font color=\"#FF0000\">*</font>, отмечены обязательные поля!";
    45. $error='n';
    46. echo $forma;
    47.     }  
    48. else {
    49.    
    50.     //Удаляем начальные и конечные пробелы в вводимом значении поочереди в каждом нужном нам поле при помощи trim();.
    51.    
    52.     //Сейчас проверяем наличие переменной $_POST['name_avtora'].
    53.     if (isset($_POST['name_avtora'])) {$name=trim($_POST['name_avtora']); $name=htmlspecialchars($name); $_SESSION['name_avtora']=$name;} else $name=="";
    54.     //Если значение переменной пусто, то выводим сообщению пользователю об ошибке и устанавливаем флажек об ошибке $error='y';.
    55.     if ($name=="")  {$error='y';
    56.            //Если переменнвая $name_avtora не установлена, просим повторить ввод данных пользователем.
    57.     echo 'Не введено значение в обязательное к заполнению поле "<font color="#FF0000">Имя разработчика</font>"<br>';   
    58.         };
    59.    
    60.     //Сейчас проверяем наличие переменной $_POST['amail_avtora'].
    61.     if (isset($_POST['amail_avtora'])) {$email=trim($_POST['amail_avtora']); htmlspecialchars($email); $_SESSION['amail_avtora']=$email; if (!ereg("^[^@]+@([a-z0-9\-]+\.)+[a-z]{2,4}$", $email)) {$error='y'; echo ' <font color="#FF0000">не корректный e-mail</font><br>';}  else $email=="";}
    62.     //Если значение переменной пусто, то выводим сообщению пользователю об ошибке.
    63.     if ($email=="")  {$error='y';
    64.            //Если переменнвая $amail_avtora не установлена, просим повторить ввод данных пользователем.
    65.     echo 'Не введено значение в обязательное к заполнению поле "<font color="#FF0000">E-mail разработчика</font>"<br>';   
    66.     };
    67.    
    68.     //Сейчас проверяем наличие переменной $_POST['password'].
    69.     if (isset($_POST['password'])){
    70.     $pasw1=trim($_POST['password']); $pasw1=htmlspecialchars($pasw1); $_SESSION['password']=$pasw1;}
    71.  else $pasw1=="";
    72.     //Если значение переменной пусто, то выводим сообщению пользователю об ошибке.
    73.     if ($pasw1=="")  {$error='y';
    74.            //Если переменнвая $password не установлена, просим повторить ввод данных пользователем.
    75.     echo 'Не введено значение в обязательное к заполнению поле "<font color="#FF0000">Введите ваш пароль</font>"<br>';
    76.     };
    77.    
    78.     //Сейчас проверяем наличие переменной $_POST['password2'].
    79.     if (isset($_POST['password2'])) {$pasw2=trim($_POST['password2']); $pasw2=htmlspecialchars($pasw2); $_SESSION['password2']=$pasw2;}
    80.  else $pasw2=="";
    81.     //Если значение переменной пусто, то выводим сообщению пользователю об ошибке.
    82.     if ($pasw2=="")  {$error='y';
    83.            //Если переменнвая password2 не установлена, просим повторить ввод данных пользователем.
    84.     echo 'Не введено значение в обязательное к заполнению поле "<font color="#FF0000">Введите ваш пароль еще раз</font>"<br>';  
    85.     };
    86.     if (isset($_POST['URL_avtora'])) {$url=trim($_POST['URL_avtora']); $url=htmlspecialchars($url); $_SESSION['URL_avtora']=$url;}
    87.    
    88.     if ($pasw2!=$pasw1)
    89.                        {$error='y'; echo "Введенные Вами <font color=\"#FF0000\">пароли не совпадают</font>! Введите их снова.<br>";};
    90.     if ($pasw2==$pasw1) //ВВеденоые пароли совпадают, поэтому создаю новую переменную '$paswfinal'
    91.                        $paswfinal==$pasw2;
    92.      
    93.                    
    94.    
    95.     }
    96.    
    97.     if ($error=='n') {echo "";}
    98.     else if ($error=='y') {echo "<a href=# onClick='history.back()'><br><br>Вернитесь назад и отредактируйте пожалуйста не корректные данные!.</a><br>";}
    99.  else {
    100.  echo 'Все данные введены правильно!!! Можно их вносить в БД.<br>--><br>--><br>--><br>'; $vvedeno='1';
    101.  $sql="INSERT INTO avtors (name_avtora, amail_avtora, URL_avtora, pol_avtora, tip_avtora, password) VALUES
    102.          (
    103.           '".mysql_real_escape_string($_SESSION['name_avtora'])."',
    104.           '".mysql_real_escape_string($_SESSION['amail_avtora'])."',
    105.           '".mysql_real_escape_string($_SESSION['URL_avtora'])."',
    106.           '".mysql_real_escape_string($_SESSION['pol_avtora'])."',
    107.           '".mysql_real_escape_string($_SESSION['tip_avtora'])."',
    108.           '".mysql_real_escape_string($_SESSION['password'])."'
    109.           )";
    110.  
    111.   $resultinsert = mysql_query($sql);
    112.   if ($resultinsert){
    113.               echo "Все внесено в БД! Поздравляем!<br><a href='tableavtors.php'>Посмотреть список всех разработчиков.</a><br>"; $vvedeno_v_DB='1';
    114.          } else {
    115.               echo "Возникла следующая проблема: ".mysql_error();
    116.          }
    117.         };
    118.         if ($vvedeno_v_DB=='1') {
    119.         //очистить данные сессии для текущего сценария:
    120.         $_SESSION=array();
    121.         //Удалить куки, соответствующую SID:
    122.         unset($_COOKIE[session_name(registratzia_razrabotchikov)]);
    123.         //Уничтожить хранилище сессии:
    124.         session_destroy();
    125.         };
    126.  
    127. ?>
    В файле который подключается находятся настройки соединения с БД,хотя я думаю это и так всем понятно!

    Как оцените? Может че усовершенствовать можно или упростить другим языком, только без потери функционала.

    :D

    Теперь добавлю шифрование и разработаю след таблицу, думаю получится!
    Оставляем отзывы! :)
     
  12. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Вот еще забыл: как Вы думаете, то что в базе например прописана длина имени пользователя 35 символов, а он введет 49 символов, что в этом случае будет? Мой скрипт выдаст сообщение об ошибке Мускула или просто обрежит вводимое значение до 35 символов? Или эти параметры лучше тоже проверять еще до отправки в БД? Заранее спасибо!
     
  13. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    вот блин, ну заняты люди, вот и не отвечают. У тебя же не вопрос вида «посмотрел секунду — ответил».
    обрежется до нужного количества. Проверяй длину имени.
     
  14. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Спасибо и за такой ответ,я прекрасно понимаю, что то что я выложил за минутку не проанализируешь! Внесу попробую изменения и проверку вводимых данных!, Наверное лучше организовать это с помощью параметров формы, мол больше 35 символов невведется и все!

    К стати, у меня дома Нет полител куда то, говорят провайдер умер, оперативностью тоже не смогу отличится из за этого!

    Тема по прежнему актуальна и разрабаывается, не зависимо пишу я чего сюда или нет,скорее всего просто нет выхода в Инет! :D
     
  15. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ограничивать формой и на всякий случай ещё и на сервере strlen()
     
  16. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Спасибо. Попробую применить и ее и ограничение по форме. У меня пока еще есть вопрос по тому как по сессии передать значение остальных переменных, таких как пол и тип , которые выбираются пользователем!

    С точки зрения безопасности мой скрипт в какую сторону еще усовершенствовать? Хочу в итоге получить систему с админской частью.
    И вопрос: как лучше организовать хранение изменений в скриптах и обновление текущей версии скрипта, скриптов, в авторежиме, если эта система (Учет изменений в скриптах) лежит на сервере в сети и доступна всем, кто зарегистрировался.
    В дальнейшем, думаю этот скриптик, набор скриптов помогут поддерживать актуальность версий и незахламлять сервер старыми версиями.
     
  17. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    точно так же
    если это регистрация, то не мешало бы ещё каптчу повесить и, может быть, подтверждение решистрации по e-mail
    http://ru.wikipedia.org/wiki/CVS
     
  18. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Что это значит? Про эмайл вроде понятно. Хотя как реализовать замкнутый процесс зарегистрировался потом получил письмо в нем нажал ссылку зарегился окончательно? Представляю пока туговато, но насколько я понимаю надо использовать куки или что то на подобии этого? Да.
     
  19. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Прочитал кучу страничек по паролям, вроде все понятно, осталось только реализовать! Поиск рулит! А параллельно и еще много всякого прочитал!
    Кстати, мой провайдер воскрес!
     
  20. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Добрый вечер! Вот добавил вот таким образом шифрование пароля пользователя. Он заносится в шифрованном виде в БД. Я все правильно сделал или нет? По моим тестам он заносится, и каждый раз разный вид у хэша введенного пароля, при этом пароль всегда один и тотже, я так понимаю что так и должно быть. Но мне непонятно как пользователь будет авторизоваться в системе, если его пароль захеширован, наверное я правильно выражаюсь, если нет то поправьте пожалуйста. Как все делается во время авторизации? Его введенный для авторизации пароль опять хешируется таким же образом что и при вводе во время регистрации потом сравниваются хэши и при совпадении ОК если иначе то ПОШОЛ ГУЛЯТЬ!! В ДРУГОЕ МЕСТО! Вопрос: Хэши паролей в моем случае совпадут или нет? В этом фопросе я и сомневаюсь. Подскажите, направьте пожалуйста. Заранее спасибо!
    Вот мой код, точнее часть кода из моего скрипта:
    PHP:
    1.  <?php if ($pasw2==$pasw1) //ВВеденоые пароли совпадают, поэтому создаю новую переменную '$passwfinal' значение которой и заношу в БД
    2.     {
    3.     $salt=rand(); $paswfinal==$pasw2; $passfinal=md5(md5($paswfinal.$salt));
    4.         } ?>
     
  21. antonn

    antonn Активный пользователь

    С нами с:
    10 июн 2007
    Сообщения:
    2.996
    Симпатии:
    0
    при регистрации в базу попадает логин и пароль.
    при логине скрипту передаются логин и пароль, от переданого пароля берется хеш и сравнивается с тем, что в базе для переданого логина :)
     
  22. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Конечно хеши разные, ведь у вас в пароле всегда разная соль!
    У одинаковых символов будет одинаковый хэш.
    Например, в базе хранится md5("Vasya".$salt), где $salt = "$WESD#";
    PHP:
    1. <?php
    2. //$result["pwd"] пароль, взятый из базы
    3. if ($result["pwd"] == md5($_POST["pwd"].$salt)) {
    4.   $_SESSION["log"] = "1";
    5. }
    6. ?>
     
  23. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    записывай вместе с паролем и логином ещё и «соль» и сравнивай на основе пароль_от_пользвателя+соль_из_базы. $salt генерируется 1 раз при создании пользоателя.
     
  24. Stasrot1

    Stasrot1 Активный пользователь

    С нами с:
    26 сен 2007
    Сообщения:
    119
    Симпатии:
    0
    Адрес:
    Тут недалеко, гдето вон за той горой!
    Спасибо! Вы все мне немного помогли и я теперь разобрался вроде с этим окончательно!?

    Luge,
    а если я буду хранит еще и соль в БД и сравнивать при авторизации пару пароль и имя, а для сверки паролей и брать эту соль из БД, правильно? И еще: если то что написал я выше правильно, то не целесообразнее ли соль назначить какой нибуть постоянной для всех пользователей? Или нет? Или в моем случае по этой соли и паролю можно будет сказать пользователю "Здравствуй Вася" хотя он и не вводил свой логин (т. е. он просто зайдя на сайт вводит при авторизации ТОЛЬКО пароль и по нему происходит авторизация? Правда может у меня будет несколько пользователей с одним и тем же паролем! Похоже что без логина не обойтись! Поясни пожалуста правильно я мыслю?

    Сейчас как раз начал заниматься авторизацией разработчиков!