За последние 24 часа нас посетили 17563 программиста и 1716 роботов. Сейчас ищут 1823 программиста ...

Реализация авторизации HTML+php+MySQL

Тема в разделе "PHP для новичков", создана пользователем СергейЧИТА, 27 ноя 2014.

  1. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    Пытаюсь реализовать авторизацию на странице.
    Для этого разбиваю задачу на сл этапы:
    1.Создание HTML-объектов под указание ФИО, защита в них от прописки скриптов, передача содержания этх объектов в БД в соотв таблицу,
    2..Создание HTML-объектов под указание логин и пароль, передача их в БД в соотв таблицу и проверка условий
    2.1.Если в БД имеются данные о введённом логине и пароле, то написать "Вы в личном кабинете+обращение по ФИО"+открыть для просмотра <div id="lichkab"> (имеется на стартовой странице в index.php) в тэге <body>
    2.2.Если в БД отсутствуют данные логин и пароль, то открыть для доступа объекты созданные на 1 этапе и возможности ввести ФИО и отправить их в БД...далее вывести логин и пароль...и снова на этап 2

    Для этого создана таблица sotr в БД со сл полями: `id_sotr`(счётчик),остальные поля текстовые :`Fam`, `Im`, `Och`, `konttel`, `adres`, `rozhdata`, `Emailsotr`, 'login', 'passwd'.
    как-то не получается записать в переменные данные из объектов HTML-страницы

    вот пытаюсь реализовать п.1
    выводить выводит на экран объекты для ввода, но после заполнения пытаюсь нажать Добавить-нет нужного результата((

    Код (PHP):
    1.                 <?php
    2.                 
    3.                 if (mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db")) { 
    4.    echo '<form method="POST" action="index.php">
    5.                      <h3>Фамилия</h3>
    6.                       <input type="text" name="fam" value=""><br>
    7.                      <h3>Имя</h3>
    8.                       <input type="text" name="im" value=""><br>
    9.                      <h3>Отчество</h3>
    10.                       <input type="text" name="otch" value=""><br>
    11.                       <input type="submit" name="btnadduser" value="Добавить">
    12.                 </form>';        
    13.                 }             
    14.              if( isset ($_POST['fam'])){
    15.                 $ffam=$_POST['fam'];
    16. //защита от от прописки в них скрипта
    17.                 if(preg_match('/\W/iu',$ffam)) {
    18.                 $error[] = array("Введите Фамилию корректно", "ffam");
    19.                 } else {
    20. //                echo'Норм все.';
    21.                                 
    22.              if( isset ($_POST['im'])){
    23.                 $fim=$_POST['im'];
    24. //защита от от прописки в них скрипта
    25.                 if(preg_match('/\W/iu',$fim)) {
    26.                 $error[] = array("Введите Фамилию корректно", "fim");
    27.                 } else {
    28. //                echo'Норм все.';
    29.                 
    30.                 
    31.              if( isset ($_POST['otch'])){
    32.                 $fotch=$_POST['otch'];
    33. //защита от от прописки в них скрипта
    34.                 if(preg_match('/\W/iu',$fotch)) {
    35.                 $error[] = array("Введите Фамилию корректно", "fotch");
    36.                 } else {
    37. //                echo'Норм все.';
    38.                 
    39.                    
    40.             $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db"");
    41.             $query1="INSERT INTO `e18346_db`.`sotrud` (`Fam`, `Im`, `Och`, `konttel`, `adres`, `poslrab`, `otziv`, `rozhdata`, `Emailsotr`) VALUES ('$ffam', '$fim', '$fotch', '212121', 'Россия', 'IT-отдел', '', '2014-11-11', 'ivmail@email.ru')";
    42.             $result=mysqli_query($db1,$query1);
    43.             if (!$result){
    44.             echo "Извините Фамилия Имя Отчество не зарегистрировались в БД";
    45.             }
    46.             mysqli_close($db1);
    47.             }
    48.             }
    49.             }
    50.             }
    51.             }
    52.             }
    53.             ?>
    Подскажите что делаю не так?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    пароль свой светишь в листинге =)
     
  3. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Посмотри, как это сделано у других, потом делай что-то свое.
    Я объясню тебе ты делаешь.

    1. Пытаешься установить соединение с базой данных. Если соединение установлено, то ты выводишь форму "ФИО". (хотя mysqli_connect не возвращает true или false, в случаях успешного соединения или наоборот, она возвращает объект, представляющий подключению к mysql серверу) Почему ты решил, что вывод формы должен производиться только тогда, когда соединение установлено? Это никак не взаимосвязано. Выводить форму или нет должен решать фактор присутствия параметров запроса. Если параметры $_POST['fam'], $_POST['im'], $_POST['otch'] установлены, то форму можно не выводить, а можно и выводить, но тогда с флешкой, что "данные сохранены бла-бла-бла" или "данные не сохранены бла-бла-бла".

    2. "защита от от прописки в них скрипта". От какого скрипта? Прописки где? Это ничего не защищает.

    3. Потом ты опять коннектишся к базе (зачем?), не проверяешь уже ничего...

    Вообщем, посмотри, как это устроено у других, может цмс какую поковыряй.

    Добавлено спустя 52 секунды:
    Да ладно, хоста то мы не знаем =)
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Считаю когда русские слова в транслите используют в коде, это дурной стиль. Такой код невозможно читать и поддерживать.
    Вторая ошибка, это логика вперемешку с HTML. Такой код опять же невозможно читать.
    Хотябы поместите код в [code=php][/code] чтобы подсветка нам помогала!
    Третья: пользовательский ввод без экранирования вставляется в запрос. Приглашение к атаке.
    Четвертое и главное: вывалить свой код без описания проблемы и спросить "что не так". Да всё не так )))

    "Нет нужного результата" — отличное описание, чо. Лично у меня нет догадок насчет ожидаемого результата и того, что происходит в реальности.
     
  5. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    Мой косяк)))согласен))поправил....ну а с другой стороны даже если и засветил-я же это делаю не для работы, а в ходе изучения))так что наличие атаки-особо никакого ущерба не нанесёт)единственное-только заново всё заливать)изучаю же,пробую, навык нарабатываю...

    Исправил..

    Согласен, мой косяк,исправил вот так:
    Код (PHP):
    1.  <?php
    2.                $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db"); 
    3.            
    4.    echo '<form method="POST" action="index.php">
    5.                      <h3>Фамилия</h3>
    6.                       <input type="text" name="fam" value=""><br>
    7.                      <h3>Имя</h3>
    8.                       <input type="text" name="im" value=""><br>
    9.                      <h3>Отчество</h3>
    10.                       <input type="text" name="otch" value=""><br>
    11.                       <input type="submit" name="btnadduser" value="Добавить">
    12.                 </form>';        
    13.                              
    14.              if( isset ($_POST['fam'])){
    15.                 $ffam=$_POST['fam'];
    16. //защита от от прописки в них скрипта
    17.                 if(preg_match('/\W/iu',$ffam)) {
    18.                 $error[] = array("Введите Фамилию корректно", "ffam");
    19.                 } else {
    20. //                echo'Норм все.';
    21.                                 
    22.              if( isset ($_POST['im'])){
    23.                 $fim=$_POST['im'];
    24. //защита от от прописки в них скрипта
    25.                 if(preg_match('/\W/iu',$fim)) {
    26.                 $error[] = array("Введите Фамилию корректно", "fim");
    27.                 } else {
    28. //                echo'Норм все.';
    29.                 
    30.                 
    31.              if( isset ($_POST['otch'])){
    32.                 $fotch=$_POST['otch'];
    33. //защита от от прописки в них скрипта
    34.                 if(preg_match('/\W/iu',$fotch)) {
    35.                 $error[] = array("Введите Фамилию корректно", "fotch");
    36.                 } else {
    37. //                echo'Норм все.';
    38.                 
    39.                    
    40.           
    41.             $query1="INSERT INTO `e18366_db`.`sotrud` (`Fam`, `Im`, `Och`, `konttel`, `adres`, `poslrab`, `otziv`, `rozhdata`, `Emailsotr`) VALUES ('$ffam', '$fim', '$fotch', '212121', 'Россия', 'IT-отдел', '', '2014-11-11', 'ivmail@email.ru')";
    42.             $result=mysqli_query($db1,$query1);
    43.             if (!$result){
    44.             echo "Извините Фамилия Имя Отчество не зарегистрировались в БД";
    45.             }
    46.             mysqli_close($db1);
    47.             }
    48.             }
    49.             }
    50.             }
    51.             }
    52.             }
    53.             ?>

    А вот тут не догнал до финала...собственно поэтапно поясню:
    1.От какого скрипта?-возможно не так выразился...недопущению вводить запрещающие символы...в том числе для прописки скрипта атакующего-т.е. предотвращение исполнения любого вида скрипта, который может повлиять на работоспособность сайта и утечки сведений(в том числе раскрытие структуры сайта и т.п.). для этого я использую регулярные выражения и проверяю истинность или ложь при анализе данных, полученных через форму методом POST...Если честно мб я реализовал не совсем то, что хотелось бы или только частично-но пока ещё не нашёл как другие эту задачу разрешают-какая методика...пока в поисках...
    2.Прописки где?-в содержании полей ввода в объектах
    <input type="text" name="fam" ...
    <input type="text" name="im" ....
    <input type="text" name="otch"...

    я соответственно проверяю содержание каждого вышеуказанного объекта, когда нажимается кнопка и запускается POST-запрос(т.е. данные передающие на сервер)...как бы логика такая была...Прошу не судить строго, я лишь пытаюсь разобраться-поэтому поэтапно делюсь как я это понимаю должно быть...возможно я ошибаюсь, того просьба поясните в кратце как логика должна иначе работать и хотя бы в какую сторону смотреть-буду гуглить...

    Не совсем понял..поясните, что имеется ввиду и если по возможности попроще-также в какую сторону смотреть-буду думать и искать как реализовывать

    Это я для наглядности указываю, что в кода я имел ввиду-сразу в коде ввиде коментов

    А как иначе мне осветить проблему?))я же не всю html-страницу вывожу, а лишь с той частью с которой пытаюсь оперировать...просто я в php код запихал отрывок html-кода для того, чтобы в дальнейшем оперировать удобнее при реализации п.2 изначально в ТС в моём написано...т.е. я до скрипта буду потом ещё один php скрипт писать с выводом двух input , одной submit и одной button+ условие, если не может залогиниться(по нажатию submit (Войти)), то нажимает button (Зарегистрироваться) (т.е. нет учётной записи у клиента-логин+пароль), тогда уже выводит вышеуказанный php-скрипт с уже указанными в данном тс тремя input'ами и одной submit(Добавить) ...вот так я думаю рализовать...просто поэтапно мелкими перебежками иду к решению поставленной самим перед собой задачи:)
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    Такая атака называется "sql-injection". Т.к. новички регулярно допускают подобный косяк, существуют уже автоматические сканнеры подобной уязвимости. Ваш сайт вскроют даже не напрягаясь. Суть вот в чем: везде, где ты в запрос подставляешь значение, можно подставить значение + дейстивие. типа:
    …WHERE name='$ffam' может превратиться не только в
    …WHERE name='иван' , но и в
    …WHERE name='все равно кто' or id=1 -- то есть в запросе будет задействована совсем не та запись, которая предполагалась
    или так: есть уникально проиндексированное поле, вставить повторно такое же не получится, но можно обойти это через инъекцию фразы
    …ON DUPLICATE KEY UPDATE
    Код (PHP):
    1. INSERT INTO users(username, password) VALUES('admin', '123456') -- ошибка уникальности, admin уже есть
    а вот такое уже сработает:
    Код (PHP):
    1. INSERT INTO users(username, password) VALUES('admin', '123456') ON DUPLACTE KEY UPDATE SET password=VALUES(password) -- пароль админа будет заменен
    понимаешь? достаточно просто подсунуть строку с апострофом и текстом за ним!

    Защита от такой атаки — функция mysqli_real_escape_string() либо подготовленные запросы с плейсхолдерами.
    Код (PHP):
    1. $username = mysqli_real_escape_string($db, $_POST['username']);
    2. $password = mysqli_real_escape_string($db, $_POST['password']);
    3. mysqli_query($link, "INSERT INTO users (username, password) VALUES ('$isername', '$password')"); 
    все апострофы внутри строк будут экранированы \' и инъекция станет невозможна.
     
  7. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Этапы:

    1. Обработка параметров запроса.
    2. Вывод формы.
    3. Установка соединения с базой и выполнение запроса.

    Усе...

    У тебя сначала идет половина 3-го пункта (без проверки, установлено соединение или нет), потом 2-ой пунтк, потом 1-ый, потом вторая половина 3-го пункта. Вот как-то так.

    Зачем? Пусть пишут как хотят... Ну, максимум что я бы в этом случае сделал - проверял длину строки, чтобы слишком длинная не была. И то - это еще думать нужно. Это раз.
    Два - "Прописки где?-в содержании полей ввода в объектах", я так понимаю, что ты имеешь ввиду XSS уязвимости? Для этого со строкой ничего страшного делать не нужно. Просто положи в базу как есть. А потом, при выводе, нужно эту строку обработать с помощью htmlspecailchars. Эта функция спец. символы в строке преобразует в html-сущности. И все... Уязвимости нет...
    Все, что ты должен был сделать со строкой перед вставкой в запрос - это экранировать ее с помощью специальной функции. Если ты используешь процедурный стиль mysqli, то логично использовать mysqli_real_escape_string.

    Добавлено спустя 4 минуты 34 секунды:
    Как ты меня опередил? Я когда сообщеньку отправлял, мне не показывали, что есть новое...
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    а сбылось это: никто, даже ты через некоторое время, не сможет понять что значит `Im` или еще круче - $fim
    а вот если бы было 'usernaname` , $username — вот это был бы реально самодокументированный код
     
  9. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    да глючит доску неслабо. у меня порой случается что просто на страницу перезагружает без коммента. а по ф5 коммент на месте оказывается. бывает что показывает мол всё хорошо а по факту приходится взадиться и повторно отправлять комментарий. так что это мелочи всё. подумаешь не работает штатная функция. тут уж лет пять просят по клику на никнейм не профиль выдавать а болдить в редактор сообщения - хрен. живем без новых функций и без заплаток багов. се ля ви.

    Добавлено спустя 48 секунд:
    логинамана (ц) джамшут
     
  10. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    ну ты не назвал проблему вообще, поэтому и говорить как бы не о чем )))

    если бы вопрос был сформулирован, можно было бы показать только то, что имеет к нему отношение. наверное
    - если у тебя ошибка в логике, то сам текст html не имеет значения.
    или
    - если у тебя "едет" разметка, то sql-запросы не имеют значения.
    твоя мешанина не помогает понять суть.

    в реальных проектах сначала идет логика "если пароль верный, то $user=такой, иначе $user=гость". а в конце подключается include с текстом страницы. так намого легче править в будущем!!!
     
  11. dapperkop

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

    С нами с:
    26 сен 2013
    Сообщения:
    890
    Симпатии:
    0
    Ganzal, штаренький форум. че уж тут поделаешь?...
     
  12. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    надо обновить блин уже вообще хоть новый открывай
     
  13. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    ага понял...я так понимаю мой код должен быть изменён вот так:
    Код (PHP):
    1.  <?php
    2.                         
    3.    echo '<form method="POST" action="index.php">
    4.                      <h3>Фамилия</h3>
    5.                       <input type="text" name="fam" value=""><br>
    6.                      <h3>Имя</h3>
    7.                       <input type="text" name="im" value=""><br>
    8.                      <h3>Отчество</h3>
    9.                       <input type="text" name="otch" value=""><br>
    10.                       <input type="submit" name="btnadduser" value="Добавить">
    11.                 </form>';        
    12.                              
    13.              if( isset ($_POST['fam'])){
    14.              $ffam=mysqli_real_escape_string($_POST['fam']);
    15.                 
    16. //защита от от прописки в них скрипта
    17.                 if(preg_match('/\W/iu',$ffam)) {
    18.                 $error[] = array("Введите Фамилию корректно", "ffam");
    19.                 } else {
    20. //                echo'Норм все.';
    21.                                 
    22.              if( isset ($_POST['im'])){
    23.                 $fim=mysqli_real_escape_string($_POST['im']);
    24. //защита от от прописки в них скрипта
    25.                 if(preg_match('/\W/iu',$fim)) {
    26.                 $error[] = array("Введите Фамилию корректно", "fim");
    27.                 } else {
    28. //                echo'Норм все.';
    29.                 
    30.                 
    31.              if( isset ($_POST['otch'])){
    32.                 $fotch=mysqli_real_escape_string($_POST['otch']);
    33. //защита от от прописки в них скрипта
    34.                 if(preg_match('/\W/iu',$fotch)) {
    35.                 $error[] = array("Введите Фамилию корректно", "fotch");
    36.                 } else {
    37. //                echo'Норм все.';
    38.                 
    39.                    
    40.              $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db"); 
    41.             $query1="INSERT INTO `e18366_db`.`sotrud` (`Fam`, `Im`, `Och`, `konttel`, `adres`, `poslrab`, `otziv`, `rozhdata`, `Emailsotr`) VALUES ('$ffam', '$fim', '$fotch', '212121', 'Россия', 'IT-отдел', '', '2014-11-11', 'ivmail@email.ru')";
    42.             $result=mysqli_query($db1,$query1);
    43.             if (!$result){
    44.             echo "Извините Фамилия Имя Отчество не зарегистрировались в БД";
    45.             }
    46.             mysqli_close($db1);
    47.             }
    48.             }
    49.             }
    50.             }
    51.             }
    52.             }
    53. ?>


    не совсем понял...т.е. я подправил ход действий выше-так логика правильнее получается должна быть?
    вопрос-как в php синтаксически можно проверить объект <input type="button"...> нажата или нет..если нажата, то выданные два импута текстовых-скрыть и вывести вышеуказанные в коде импуты с уже дальнейше работой...слегка сумбурно объяснил, но как-то так...
    Т.е. если не понятно что я в итоге хочу получить, то по шагам ещё раз:
    дополнить данный скрипт ещё двумя импутами -текстами для вода логина и пароля с двумя кнопками-одна кнопка-войти(submit) другая просто button-Зарегистрироваться. Т.е. изначально пользователь должен видеть всего два поля ввода и две кнопки визуально...далее если пользователь нажимает кнопку submit-то методом POST с этих двух полей-как я уже понял экранируя содерждимое-проверяю есть ли эти сведения в БД...если их нет-вывести-Мол извините такой учётной записи нет или не правильно введены логин и или пароль....Поэтому пользователю придётся нажать на кнопку button, по нажатию которой которой ранее видимые пользователю поля для ввода логина и пароля визуально исчезают и появляются три поля для ввода-фамилия, имя и отчество(как указано в выше код) и уже заполняет фамилию, имя и отчество, логин(самостоятельно ввести для удобства-перед вставкой в БД проверить нет ли уже такого userlogin в БД) нажимает на кнопку submit-Добавить и методом POST? экранируя содержания этих полей-добавляем в БД..после успешной вставки в БД- сгенирировать пароль и вывести на экран логин и пароль с кнопкой button-Попытка входа, при нажатии которой снова попадаем на возможность ввести логин и пароль с двумя кнопками-Войти и Зарегистрироваться....
    сумбурно, но как-то вот так вижу...
     
  14. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    если нужны дополнительные поля при регистрации и есть отдельная страница регистрации то нужно ссылку на регистрацию оставлять ссылкой. если не нужны и достаточно логина-пароля то в форме должно быть две кнопки. а на стороне сервера уже различать какую бутонку жамкнул несчастный. вот. если хочется динамику на одной странице сделать то лучше "вкладками" оформить форму. юзер видит логин-пароль и сайн-ин. жмакает вкладку "регистрации" и видит другой набор полей у которого кнопка - сайн-ап.
     
  15. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    у этой функции два аргумента, лопни твои глаза! )))
     
  16. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    А туплю)))пордонче)
    прочитал вот здесь http://php.ru/manual/function.mysql-real-escape-string.html
    и извиняюсь
    тогда получается код такой:
    Код (PHP):
    1.  <?php
    2.       $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db");                    
    3.    echo '<form method="POST" action="index.php">
    4.                      <h3>Фамилия</h3>
    5.                       <input type="text" name="fam" value=""><br>
    6.                      <h3>Имя</h3>
    7.                       <input type="text" name="im" value=""><br>
    8.                      <h3>Отчество</h3>
    9.                       <input type="text" name="otch" value=""><br>
    10.                       <input type="submit" name="btnadduser" value="Добавить">
    11.                 </form>';        
    12.                              
    13.              if( isset ($_POST['fam'])){
    14.              $ffam=mysqli_real_escape_string($db1,$_POST['fam']);
    15.                 
    16. //защита от от прописки в них скрипта
    17.                 if(preg_match('/\W/iu',$ffam)) {
    18.                 $error[] = array("Введите Фамилию корректно", "ffam");
    19.                 } else {
    20. //                echo'Норм все.';
    21.                                 
    22.              if( isset ($_POST['im'])){
    23.                 $fim=mysqli_real_escape_string($db1,$_POST['im']);
    24. //защита от от прописки в них скрипта
    25.                 if(preg_match('/\W/iu',$fim)) {
    26.                 $error[] = array("Введите Фамилию корректно", "fim");
    27.                 } else {
    28. //                echo'Норм все.';
    29.                 
    30.                 
    31.              if( isset ($_POST['otch'])){
    32.                 $fotch=mysqli_real_escape_string($db1,$_POST['otch']);
    33. //защита от от прописки в них скрипта
    34.                 if(preg_match('/\W/iu',$fotch)) {
    35.                 $error[] = array("Введите Фамилию корректно", "fotch");
    36.                 } else {
    37. //                echo'Норм все.';
    38.                 
    39.                    
    40.             
    41.             $query1="INSERT INTO `e18366_db`.`sotrud` (`Fam`, `Im`, `Och`, `konttel`, `adres`, `poslrab`, `otziv`, `rozhdata`, `Emailsotr`) VALUES ('$ffam', '$fim', '$fotch', '212121', 'Россия', 'IT-отдел', '', '2014-11-11', 'ivmail@email.ru')";
    42.             $result=mysqli_query($db1,$query1);
    43.             if (!$result){
    44.             echo "Извините Фамилия Имя Отчество не зарегистрировались в БД";
    45.             }
    46.             mysqli_close($db1);
    47.             }
    48.             }
    49.             }
    50.             }
    51.             }
    52.             }
    53. ?>
    да хотелось бы реализовать именно динамику...можно попобробнее этот момент?был бы признателен
     
  17. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    нельзя. я считаю ты не готов решать такие сложные задачи. по тебе это видно. ибо когда будешь готов твой мозг сам тебе подскажет все нужные технологии. а пока ты не знаешь с какими технологиями ты можешь работать. а уже пытаешься решить сложную задачу. я сильно против подобного. "не умеешь срать не мучай жопу" как говорится. иди всё же теорию подучи. а то мы своими знаниями поможем собрать приложение уровня портала человеку со знаниями уровня амёбы. не comme il faut чо-то.
     
  18. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    да фактически я в целом мог понять алгоритм, но немного не понял что имелось ввиду под "на одной странице сделать то лучше "вкладками" оформить форму"? , т.е. в <form>....</form> можно создать некие вкладки?или я не так понимаю? и самое главное как оперировать с ними динамически? хотя бы подскажи в каком направлении почитать-буду искать читать, разбираться...
     
  19. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    начать с теории программирования где ты поймешь как и с какими структурами работать.
    когда у тебя будет понимание основ программирования ты откроешь хэндбук по аштиэмэлю и поймешь за что отвечает то или иной тег в статике
    когда у тебя будут получаться статические хтмл страницы ты перейдешь к такому короткому но очень важному материалу как каскадные таблицы стилей. ты поймешь математику компиляции стиля и научишься разным смешным динамическим трюкам без использования какого-либо языка программирования будь то на стороне сервера или клиента.
    когда у тебя будет красивый и грамотно оформленный статический код ты встанешь на развилке. с одной стороны у тебя будет динамическая генерация статического кода - пхп или любой доступный язык программирования которому веб-сервер может отправить запрос от клиента.
    а по другую сторону у тебя будет динамика на стороне клиента. естественно для начала это будет джаваскрипт невероятно мощный и интересный язык программирования который очень сильно отличается от того к чему ты привыкнешь на пхп. но он даст тебе возможность писать полноценные приложения при грамотном сочетании различных технологий.

    и тогда ты поймешь что я подразумеваю под "оформить вкладками". потому что уже будешь знать как динамически и стилистически перерисовать страницу без ее перезагрузки. будешь знать как работают фронтэнды и бэкэнды. и таких вопросов не возникнет. о того что я тебе сейчас скажу что заветное джаваскрипт+сиэсэс тебе понятнее не станет потому что для тебя это все еще темнейший лес. ты еще не знаешь html и алгоритмы а уже пытаешься делать php+html+css+javascript+mysql. это провал. у тебя каша в голове.
     
  20. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    Какие сутки читаю, но пока не могу понять этот JS((

    вот к примеру у меня такой код на php сделал:
    Код (PHP):
    1. <div id="content">
    2.     <div id="go">
    3.             <h1>Введите данные</h1>
    4.             <?php
    5.                 $Aut=0;
    6.                 
    7.                 if (mysqli_connect("localhost","dbuser","4123456","db")) { 
    8.                 echo '<form method="POST" action="index.php">
    9.                      <h3>введите логин</h3>
    10.                       <input type="text" name="loginuser" value="">
    11.  
    12.                      <h3>введите пароль</h3>
    13.                       <input type="text" name="passworduser" value="">
    14.  
    15.                       <input type="submit" name="btngo" value="Вход">
    16.                       <input type="submit" name="btnreg" value="Регистрация">
    17.                 </form>';        
    18.                 }
    19.                 $query10="Select `login`,`passwd` from `db`.`audit`";
    20.                 $result10=mysqli_query($db1,$query10);
    21.                 
    22.                 if( isset ($_POST['loginuser'])){
    23.                 $floginuser=$_POST['loginuser'];
    24.                 if(preg_match('/\W/iu',$floginuser)) {
    25.                 echo "Введите Фамилию корректно", "floginuser";
    26.                 } else {
    27.                         echo'Норм все.';
    28.                         if( isset ($_POST['passworduser'])){
    29.                         $fpassworduser=$_POST['passworduser'];
    30.                         while ($date1=mysqli_fetch_assoc($result2)){
    31.                             if ($floginuser == $date1['login']){
    32.                                 if ($fpassworduser == $date1['passworduser']){
    33.                                 //Input's fpassworduser and loginuser and submit's btngo and btnreg сделать невидимыми
    34.                                 echo "Добро пожаловатьв  личный кабинет," ,"floginuser";
    35.                                 
    36.                                 }
    37.                                 else echo "Не существует пароль- ", "floginuser";
    38.                                 $Aut=1;
    39.                                 
    40.                             }
    41.                             }
    42.                             else echo "Нет пользователя с логином- ", "floginuser";                            
    43.                         }
    44.                         }
    45.                 }
    46.                 
    47.                 
    48.                 ?>
    49.                 
    50.     </div> 
    51.     <div id="registration">
    52.                 <h1>Авторизация</h1>
    53.                 
    54.                 <p><h2>Заполните форму</h2></p>
    55.                 
    56.                 <?php
    57.                 
    58.                 if (mysqli_connect("localhost","dbuser","4123456","db")) { 
    59.                 echo '<form method="POST" action="index.php">
    60.                      <h3>Фамилия</h3>
    61.                       <input type="text" name="fam" value="">
    62.  
    63.                      <h3>Имя</h3>
    64.                       <input type="text" name="im" value="">
    65.  
    66.                      <h3>Отчество</h3>
    67.                       <input type="text" name="otch" value="">
    68.  
    69.                       <input type="submit" name="btnadduser" value="Добавить">
    70.                 </form>';        
    71.                 }             
    72.              if( isset ($_POST['fam'])){
    73.                 $ffam=$_POST['fam'];
    74.                 if(preg_match('/\W/iu',$ffam)) {
    75.                 echo "Введите Фамилию корректно", "ffam";
    76.                 } else {
    77.                 echo'Норм все.';
    78.                                 
    79.              if( isset ($_POST['im'])){
    80.                 $fim=$_POST['im'];
    81.                 if(preg_match('/\W/iu',$fim)) {
    82.                 echo "Введите Фамилию корректно", "fim";
    83.                 } else {
    84.                 echo'Норм все.';
    85.                 
    86.                 
    87.              if( isset ($_POST['otch'])){
    88.                 $fotch=$_POST['otch'];
    89.                 if(preg_match('/\W/iu',$fotch)) {
    90.                 echo "Введите Фамилию корректно", "fotch";
    91.                 } else {
    92.                 echo'Норм все.';
    93.                 
    94.                    
    95.             $db1=mysqli_connect("localhost","dbuser","4123456","db");
    96.             $query1="INSERT INTO `db`.`sotrud` (`Fam`, `Im`, `Och`, `konttel`, `adres`, `poslrab`, `rozhdata`, `Emailsotr`) VALUES ('$ffam', '$fim', '$fotch', '212121', 'Россия', 'IT-отдел', '2014-11-11', 'ivmail@email.ru')";
    97.             $result=mysqli_query($db1,$query1);
    98.             if (!$result){
    99.             echo "Извините Фамилия Имя Отчество не зарегистрировались в БД, попробуйте ещё раз";
    100.             }
    101.             mysqli_close($db1);
    102.             }
    103.             }
    104.             }
    105.             }
    106.             }
    107.             }
    108.             ?>
    109.     </div> 
    110. </div> 
    примерно графически что имелось ввиду
    аутентификация.jpg
    и теперь реализовать взаимозаменяемость динамически этих двух div's в общем div'e по нажатию соотв кнопок.
    пока не могу разобраться как реализовать функциональность через JS((
     
  21. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    какая грязь... код нечитаемый...


    пади анекспекдет эквал насыпается?
     
  22. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    вообщем я пока прочитал пару статей, мануалов, в википедии...
    вообщем я примерно понял, что ты имел ввиду под вкладками...
    Поправь меня если я не правильно что-то понял...

    вообщем мне нужно впринципе код по-иному переписать....
    в данном случае index.php-там оставить html-код и includ'ить доп.функциональные php скрипты(которые будут исполняться на сервере)
    Кроме того, отказаться от функцbональности через клаcсику-т.е используя <form....,а функциональность реализовать javascript'ами
    Для этого, написать отдельный my.js, в которых прописать обработчики(функции), которые я могу испрользовать в index.php-например обработать нажатие кнопки onclick-> что-то сделать(кстати вот по синтаксису пока много вопросов)....
    так же по наступлению onclick-можно изменять атрибут div'ов-по активации.
    заменить вместо name объектов на id
    заменить submit и использовать обычную button c id
    в итоге приложение разобъётся на две части-клиентская(html+JS) и серверная(php+mysql)
    ...
    пока только теория...думаю как всё оформить и переписать...пока трудно конечно сразу((
     
  23. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну трудно, но лишь потому что ты пытаешься построить небоскреб не окончив и даже не поступив в строительный институт... я уже устал одно и то же тебе объяснять. вот эта вот тряпка выше меня чуть под стол не отправила. функциональность через классику... извини за мою испорченность но есть еще видимо функциональность оральная, анальная и групповая... шлюхами никогда не пользовался, поэтому могу ошибаться.

    как ты пишешь код дело полностью твое. ты просто соединяешь же разные технологии. но когда ты не умеешь соединять то тебе читать про технологии не нужно. забей. вот просто забей. я реально не понимаю чо ты такой упёртый и лезешь не по своему уровню проекты делать. задача с табами простая. но для человека который ПОНИМАЕТ. ты не понимаешь. занавес...
     
  24. СергейЧИТА

    СергейЧИТА Новичок

    С нами с:
    4 ноя 2014
    Сообщения:
    123
    Симпатии:
    0
    Ну убедил...почитал различную мануалы....
    вообщем вот так вот переделал:
    -почитал
    -дописал
    -переделал


    index.php
    Код (PHP):
    1. <!DOCTYPE html>
    2. <html>
    3.     <head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
    4.         
    5.         <meta name="description" content="">
    6.         <meta name="author" content="">
    7.         <link rel="stylesheet" href="style.css">
    8.         <script type="text/javascript" src="js/my.js"></script>
    9.         <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script>
    10.     </head>
    11. <body>
    12. <div id="content">
    13.  
    14.     <div id="go">
    15.         <h1>Вход в личный кабинет</h1>
    16.         <h3>Введите ваш логин</h3>
    17.         <input type="text" id="loginuser" value="">
    18.         <h3>Введите ваш пароль</h3>
    19.         <input type="text" id="passworduser" value="">
    20.         <input type="button" onclick="testenter()" name="btngo" value="Вход">
    21.         <input type="button" onclick="testreg()" name="btnreg" value="Регистрация">
    22.     </div> 
    23.     <div id="registration" stylе='display="none"'>
    24.                 <h1>Авторизация</h1>
    25.                 <p><h2>Заполните форму</h2></p>
    26.                 <h3>Фамилия</h3>
    27.                 <input type="text" id="fam" value="">
    28.                 <h3>Имя</h3>
    29.                 <input type="text" id="im" value="">
    30.                 <h3>Отчество</h3>
    31.                 <input type="text" id="otch" value="">
    32.                 <h3>Логин</h3>
    33.                 <input type="text" id="loginuser" value="">
    34.                 <h3>Пароль</h3>
    35.                 <input type="text" id="passworduser" value="">
    36.                 <input type="button" onclick="testadduser()" id="btnadduser" value="Отправить">
    37.     </div> 
    38. </div> 
    39. </body>
    40. </html>
    вот такой я выделил отдельно и создал в директории вместе с index.php скрипт auth.php
    Код (PHP):
    1. <?php
    2.     $result=0;
    3.     $db1=mysqli_connect("localhost","dbuser","passwd1","db");
    4.     if ($db1) 
    5.     {
    6.         $query10="Select * from `db`.`audit`";
    7.         $result10=mysqli_query($db1,$query10);
    8.         if( isset ($_POST['loginuser']))
    9.         {
    10.             $floginuser=$_POST['loginuser'];
    11.             if(preg_match('/\W/iu',$floginuser)) 
    12.             {
    13.                 //echo "Введите Фамилию корректно", "floginuser";
    14.                 $result=3;
    15.             } 
    16.             else 
    17.             {
    18.                 //echo'Норм все.';
    19.                 $result=4;
    20.                 if( isset ($_POST['passworduser']))
    21.                 {
    22.                     $fpassworduser=$_POST['passworduser'];
    23.                     while ($date1=mysqli_fetch_assoc($result2))
    24.                     {
    25.                         if ($floginuser == $date1['login'])
    26.                         {
    27.                             if ($fpassworduser == $date1['passworduser'])
    28.                             {
    29.                                 //Input's fpassworduser and loginuser and submit's btngo and btnreg сделать невидимыми
    30.                                 //echo "Добро пожаловатьв  личный кабинет," ,"floginuser";
    31.                                 $result=1;
    32.                             }
    33.                             else 
    34.                                 //echo "Не существует пароль- ", "floginuser";
    35.                                 $result=5;
    36.                                                      
    37.                         }
    38.                     }
    39.                                                         
    40.                 }
    41.                 else $result=6;//echo "Нет пользователя с логином- ". "floginuser";
    42.             }
    43.         }
    44.     }
    45.     
    46.     echo $result;
    47.     //echo "'$result'";
    48. ?>
    вот такой скрипт написал для регистрации отдельно его выделил, также возле index.php лежит и назвал reg.php
    Код (PHP):
    1.  <?php
    2.     $res=0;
    3.     $err=0;
    4.     $db1=mysqli_connect("localhost","dbuser","passwd1","db";
    5.     if ($db1) 
    6.     { 
    7.         if( isset ($_POST['fam']))
    8.         {
    9.             $ffam=$_POST['fam'];
    10.             if(preg_match('/\W/iu',$ffam)) 
    11.             {
    12.                 //echo "Введите Фамилию корректно", "ffam";
    13.                 $err=1;
    14.             } 
    15.             else 
    16.             {
    17.                 //echo'Норм все.';
    18.                 if( isset ($_POST['im']))
    19.                 {
    20.                     $fim=$_POST['im'];
    21.                     if(preg_match('/\W/iu',$fim)) 
    22.                     {
    23.                         //echo "Введите Имя корректно", "fim";
    24.                         $err=2;
    25.                     } 
    26.                     else 
    27.                     {
    28.                         //echo'Норм все.';
    29.                         if( isset ($_POST['otch']))
    30.                         {
    31.                             $fotch=$_POST['otch'];
    32.                             if(preg_match('/\W/iu',$fotch)) 
    33.                             {
    34.                                 echo "Введите Отчество корректно", "fotch";
    35.                                 $err=3;
    36.                             } 
    37.                             else 
    38.                             {
    39.                                 //echo'Норм все.';
    40.                                 if( isset ($_POST['loginuser']))
    41.                                 {
    42.                                     $flogin=$_POST[''];
    43.                                     if(preg_match('/\W/iu',$flogin)) 
    44.                                     {
    45.                                         //echo "Введите login корректно", "login";
    46.                                         $err=4;
    47.                                     } 
    48.                                     else 
    49.                                     {
    50.                                         //echo'Норм все.';
    51.                                         if( isset ($_POST['passworduser']))
    52.                                         {
    53.                                             $fpassworduser=$_POST['passworduser'];
    54.                                             if(preg_match('/\W/iu',$fpassworduser)) 
    55.                                             {
    56.                                                 //echo "Введите Пароль корректно", "fpassworduser";
    57.                                                 $err=5;
    58.                                             } 
    59.                                             else 
    60.                                             {
    61.                                                 //echo'Норм все.';
    62.                                                 $db1=mysqli_connect("localhost","dbuser","passwd1","db";
    63.                                                 $query1="INSERT INTO `db`.`sotrud` (`Fam`, `Im`, `Och`, `konttel`, `adres`, `poslrab`, `rozhdata`, `Emailsotr`) VALUES ('$ffam', '$fim', '$fotch', '212121', 'Россия', 'IT-отдел', '2014-11-11', 'ivmail@email.ru')";
    64.                                                 $result=mysqli_query($db1,$query1);
    65.                                                 $query12="INSERT INTO `db`.`audit` (`login`, `passworduser`) VALUES ('$flogin', '$fpassworduser')";
    66.                                                 $result12=mysqli_query($db1,$query12);
    67.                                                 if (!$result)
    68.                                                 {
    69.                                                     //echo "Извините Фамилия Имя Отчество не зарегистрировались в БД, попробуйте ещё раз";
    70.                                                     $err=6;
    71.                                                 } 
    72.                                                 else 
    73.                                                 {
    74.                                                     if (!$result12)
    75.                                                     {
    76.                                                         //echo "Извините Логин и пароль не зарегистрировались в БД, попробуйте ещё раз";
    77.                                                         $err=7;
    78.                                                     }
    79.                                                     else 
    80.                                                     {
    81.                                                     $res=1;
    82.                                                     }
    83.                                                     
    84.                                                 }
    85.                                                 mysqli_close($db1);
    86.                                             }
    87.                                         }
    88.                                     }
    89.                                 }
    90.                             }
    91.                         }
    92.                     }
    93.                 }
    94.             }
    95.         }
    96.     }
    97. echo $res;
    98.  ?>
    а вот такой javascript написал и положил его в /js/ назвал my.js
    Код (Text):
    1.  
    2. function testenter(){
    3.     loginjs=document.getElementById("loginuser").value;
    4.     pwdjs=document.getElementById("passworduser").value;
    5.    
    6.     alert(loginjs);
    7.     alert(pwdjs);
    8.    
    9.     $.post("auth.php", {"loginuser":loginjs, "passworduser":passwduserjs},function(data)
    10.     {
    11.         if (data == '1')
    12.         {
    13.             alert('Ok auth');
    14.         }
    15.         else
    16.         {
    17.             alert('No auth');
    18.         }
    19.        
    20.     });
    21.    
    22. }
    23. function testreg(){
    24.     */
    25.     document.getElementsById('go').style.display ='none';
    26.     document.getElementsById('registration').style.display ='block';
    27.     */
    28.     $("#go").hide();
    29.     $("#registration").show();
    30.    
    31. }
    32. function testadduser(){
    33.     famjs=document.getElementById("fam").value;
    34.     imjs=document.getElementById("im").value;
    35.     otchjs=document.getElementById("otch").value;
    36.     loginuserjs=document.getElementById("loginuser").value;
    37.     passwduserjs=document.getElementById("passwduser").value;
    38.    
    39.     $.post("reg.php",  {"fam":famjs, "im":imjs, "otch":otchjs, "loginuser":loginuserjs, "passworduser":passwduserjs},function(data)
    40.     {
    41.         if (data == '1')
    42.         {
    43.             alert('Ok reg');
    44.         }
    45.         else
    46.         {
    47.             alert('No reg');
    48.         }
    49.        
    50.     });
    51.    
    52.     */
    53.     document.getElementsById('go').style.display ='block';
    54.     document.getElementsById('registration').style.display ='none';
    55.     */
    56.     $("#registration").hide();
    57.     $("#go").show();
    58.    
    59. }
    но не работает((даже почему-то div id=registration сразу виден при загрузке, не говоря о функционировании
     
  25. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ты издеваешься? ты знаешь как жаваскрипт работает? нет? а хренли полез реализацию на фреймворках делать?
    ты издеваешься? ты алгоритмизацию изучил? вот эта тряпка в 11 уровней нестинга показывает что данными ты не умеешь манипулировать. а уже поставил перед собой задачу сделать сложный проект.
    ты издеваешься? ты читал свой html-исходник? выбор кодировки за тобой безусловно. инлайн скриптинг тоже твое личное дело. меня вот лично удивили ссылки относительно документа. ты еще не освоил локацию в гипертексте а уже пытаешься сделать сложный проект с манипулированием данными. ой тебя сколько приколов ждет... мама не горюй.

    то есть.
    ты не освоил гипертекст (статику) а уже лезешь на уровень выше - стили
    ты еще не освоил "законченную" статику (html+css) а уже лезешь на уровень выше - динамику на пхп
    ты еще не освоил базиса программирования а уже пытаешься написать алгоритм - динамику на пхп
    ты еще не освоил базиса программирования и статику а уже лезешь уровнем выше - динамика на стороне клиента
    ты еще нифига не освоил а уже пытаешься слепить усё вместе - html+php+css+javascript

    результат "но не работает((" это ровно тот результат которого ты заслуживаешь когда бежишь впереди паровоза.
    ты тыкаешь пальцем в небо. небу больно и оно не хочет тебе помогать.

    Добавлено спустя 1 минуту 18 секунд:
    для твоего удобства я каждый раз буду старательно придумывать что-нибудь новое но на одну и ту же тему. ты ж вместо того чтоб пойти поучиться пытаешься делать одно и то же - склепать из рандомных символов программу.