Пытаюсь реализовать авторизацию на странице. Для этого разбиваю задачу на сл этапы: 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): <?php if (mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db")) { echo '<form method="POST" action="index.php"> <h3>Фамилия</h3> <input type="text" name="fam" value=""><br> <h3>Имя</h3> <input type="text" name="im" value=""><br> <h3>Отчество</h3> <input type="text" name="otch" value=""><br> <input type="submit" name="btnadduser" value="Добавить"> </form>'; } if( isset ($_POST['fam'])){ $ffam=$_POST['fam']; //защита от от прописки в них скрипта if(preg_match('/\W/iu',$ffam)) { $error[] = array("Введите Фамилию корректно", "ffam"); } else { // echo'Норм все.'; if( isset ($_POST['im'])){ $fim=$_POST['im']; //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fim)) { $error[] = array("Введите Фамилию корректно", "fim"); } else { // echo'Норм все.'; if( isset ($_POST['otch'])){ $fotch=$_POST['otch']; //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fotch)) { $error[] = array("Введите Фамилию корректно", "fotch"); } else { // echo'Норм все.'; $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db""); $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')"; $result=mysqli_query($db1,$query1); if (!$result){ echo "Извините Фамилия Имя Отчество не зарегистрировались в БД"; } mysqli_close($db1); } } } } } } ?> Подскажите что делаю не так?
Посмотри, как это сделано у других, потом делай что-то свое. Я объясню тебе ты делаешь. 1. Пытаешься установить соединение с базой данных. Если соединение установлено, то ты выводишь форму "ФИО". (хотя mysqli_connect не возвращает true или false, в случаях успешного соединения или наоборот, она возвращает объект, представляющий подключению к mysql серверу) Почему ты решил, что вывод формы должен производиться только тогда, когда соединение установлено? Это никак не взаимосвязано. Выводить форму или нет должен решать фактор присутствия параметров запроса. Если параметры $_POST['fam'], $_POST['im'], $_POST['otch'] установлены, то форму можно не выводить, а можно и выводить, но тогда с флешкой, что "данные сохранены бла-бла-бла" или "данные не сохранены бла-бла-бла". 2. "защита от от прописки в них скрипта". От какого скрипта? Прописки где? Это ничего не защищает. 3. Потом ты опять коннектишся к базе (зачем?), не проверяешь уже ничего... Вообщем, посмотри, как это устроено у других, может цмс какую поковыряй. Добавлено спустя 52 секунды: Да ладно, хоста то мы не знаем =)
Считаю когда русские слова в транслите используют в коде, это дурной стиль. Такой код невозможно читать и поддерживать. Вторая ошибка, это логика вперемешку с HTML. Такой код опять же невозможно читать. Хотябы поместите код в [code=php]…[/code] чтобы подсветка нам помогала! Третья: пользовательский ввод без экранирования вставляется в запрос. Приглашение к атаке. Четвертое и главное: вывалить свой код без описания проблемы и спросить "что не так". Да всё не так ))) "Нет нужного результата" — отличное описание, чо. Лично у меня нет догадок насчет ожидаемого результата и того, что происходит в реальности.
Мой косяк)))согласен))поправил....ну а с другой стороны даже если и засветил-я же это делаю не для работы, а в ходе изучения))так что наличие атаки-особо никакого ущерба не нанесёт)единственное-только заново всё заливать)изучаю же,пробую, навык нарабатываю... Исправил.. Согласен, мой косяк,исправил вот так: Код (PHP): <?php $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db"); echo '<form method="POST" action="index.php"> <h3>Фамилия</h3> <input type="text" name="fam" value=""><br> <h3>Имя</h3> <input type="text" name="im" value=""><br> <h3>Отчество</h3> <input type="text" name="otch" value=""><br> <input type="submit" name="btnadduser" value="Добавить"> </form>'; if( isset ($_POST['fam'])){ $ffam=$_POST['fam']; //защита от от прописки в них скрипта if(preg_match('/\W/iu',$ffam)) { $error[] = array("Введите Фамилию корректно", "ffam"); } else { // echo'Норм все.'; if( isset ($_POST['im'])){ $fim=$_POST['im']; //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fim)) { $error[] = array("Введите Фамилию корректно", "fim"); } else { // echo'Норм все.'; if( isset ($_POST['otch'])){ $fotch=$_POST['otch']; //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fotch)) { $error[] = array("Введите Фамилию корректно", "fotch"); } else { // echo'Норм все.'; $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')"; $result=mysqli_query($db1,$query1); if (!$result){ echo "Извините Фамилия Имя Отчество не зарегистрировались в БД"; } mysqli_close($db1); } } } } } } ?> А вот тут не догнал до финала...собственно поэтапно поясню: 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(Добавить) ...вот так я думаю рализовать...просто поэтапно мелкими перебежками иду к решению поставленной самим перед собой задачи
Такая атака называется "sql-injection". Т.к. новички регулярно допускают подобный косяк, существуют уже автоматические сканнеры подобной уязвимости. Ваш сайт вскроют даже не напрягаясь. Суть вот в чем: везде, где ты в запрос подставляешь значение, можно подставить значение + дейстивие. типа: …WHERE name='$ffam' может превратиться не только в …WHERE name='иван' , но и в …WHERE name='все равно кто' or id=1 -- то есть в запросе будет задействована совсем не та запись, которая предполагалась или так: есть уникально проиндексированное поле, вставить повторно такое же не получится, но можно обойти это через инъекцию фразы …ON DUPLICATE KEY UPDATE Код (PHP): INSERT INTO users(username, password) VALUES('admin', '123456') -- ошибка уникальности, admin уже есть а вот такое уже сработает: Код (PHP): INSERT INTO users(username, password) VALUES('admin', '123456') ON DUPLACTE KEY UPDATE SET password=VALUES(password) -- пароль админа будет заменен понимаешь? достаточно просто подсунуть строку с апострофом и текстом за ним! Защита от такой атаки — функция mysqli_real_escape_string() либо подготовленные запросы с плейсхолдерами. Код (PHP): $username = mysqli_real_escape_string($db, $_POST['username']); $password = mysqli_real_escape_string($db, $_POST['password']); mysqli_query($link, "INSERT INTO users (username, password) VALUES ('$isername', '$password')"); все апострофы внутри строк будут экранированы \' и инъекция станет невозможна.
Этапы: 1. Обработка параметров запроса. 2. Вывод формы. 3. Установка соединения с базой и выполнение запроса. Усе... У тебя сначала идет половина 3-го пункта (без проверки, установлено соединение или нет), потом 2-ой пунтк, потом 1-ый, потом вторая половина 3-го пункта. Вот как-то так. Зачем? Пусть пишут как хотят... Ну, максимум что я бы в этом случае сделал - проверял длину строки, чтобы слишком длинная не была. И то - это еще думать нужно. Это раз. Два - "Прописки где?-в содержании полей ввода в объектах", я так понимаю, что ты имеешь ввиду XSS уязвимости? Для этого со строкой ничего страшного делать не нужно. Просто положи в базу как есть. А потом, при выводе, нужно эту строку обработать с помощью htmlspecailchars. Эта функция спец. символы в строке преобразует в html-сущности. И все... Уязвимости нет... Все, что ты должен был сделать со строкой перед вставкой в запрос - это экранировать ее с помощью специальной функции. Если ты используешь процедурный стиль mysqli, то логично использовать mysqli_real_escape_string. Добавлено спустя 4 минуты 34 секунды: Как ты меня опередил? Я когда сообщеньку отправлял, мне не показывали, что есть новое...
а сбылось это: никто, даже ты через некоторое время, не сможет понять что значит `Im` или еще круче - $fim а вот если бы было 'usernaname` , $username — вот это был бы реально самодокументированный код
да глючит доску неслабо. у меня порой случается что просто на страницу перезагружает без коммента. а по ф5 коммент на месте оказывается. бывает что показывает мол всё хорошо а по факту приходится взадиться и повторно отправлять комментарий. так что это мелочи всё. подумаешь не работает штатная функция. тут уж лет пять просят по клику на никнейм не профиль выдавать а болдить в редактор сообщения - хрен. живем без новых функций и без заплаток багов. се ля ви. Добавлено спустя 48 секунд: логинамана (ц) джамшут
ну ты не назвал проблему вообще, поэтому и говорить как бы не о чем ))) если бы вопрос был сформулирован, можно было бы показать только то, что имеет к нему отношение. наверное - если у тебя ошибка в логике, то сам текст html не имеет значения. или - если у тебя "едет" разметка, то sql-запросы не имеют значения. твоя мешанина не помогает понять суть. в реальных проектах сначала идет логика "если пароль верный, то $user=такой, иначе $user=гость". а в конце подключается include с текстом страницы. так намого легче править в будущем!!!
ага понял...я так понимаю мой код должен быть изменён вот так: Код (PHP): <?php echo '<form method="POST" action="index.php"> <h3>Фамилия</h3> <input type="text" name="fam" value=""><br> <h3>Имя</h3> <input type="text" name="im" value=""><br> <h3>Отчество</h3> <input type="text" name="otch" value=""><br> <input type="submit" name="btnadduser" value="Добавить"> </form>'; if( isset ($_POST['fam'])){ $ffam=mysqli_real_escape_string($_POST['fam']); //защита от от прописки в них скрипта if(preg_match('/\W/iu',$ffam)) { $error[] = array("Введите Фамилию корректно", "ffam"); } else { // echo'Норм все.'; if( isset ($_POST['im'])){ $fim=mysqli_real_escape_string($_POST['im']); //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fim)) { $error[] = array("Введите Фамилию корректно", "fim"); } else { // echo'Норм все.'; if( isset ($_POST['otch'])){ $fotch=mysqli_real_escape_string($_POST['otch']); //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fotch)) { $error[] = array("Введите Фамилию корректно", "fotch"); } else { // echo'Норм все.'; $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db"); $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')"; $result=mysqli_query($db1,$query1); if (!$result){ echo "Извините Фамилия Имя Отчество не зарегистрировались в БД"; } mysqli_close($db1); } } } } } } ?> не совсем понял...т.е. я подправил ход действий выше-так логика правильнее получается должна быть? вопрос-как в php синтаксически можно проверить объект <input type="button"...> нажата или нет..если нажата, то выданные два импута текстовых-скрыть и вывести вышеуказанные в коде импуты с уже дальнейше работой...слегка сумбурно объяснил, но как-то так... Т.е. если не понятно что я в итоге хочу получить, то по шагам ещё раз: дополнить данный скрипт ещё двумя импутами -текстами для вода логина и пароля с двумя кнопками-одна кнопка-войти(submit) другая просто button-Зарегистрироваться. Т.е. изначально пользователь должен видеть всего два поля ввода и две кнопки визуально...далее если пользователь нажимает кнопку submit-то методом POST с этих двух полей-как я уже понял экранируя содерждимое-проверяю есть ли эти сведения в БД...если их нет-вывести-Мол извините такой учётной записи нет или не правильно введены логин и или пароль....Поэтому пользователю придётся нажать на кнопку button, по нажатию которой которой ранее видимые пользователю поля для ввода логина и пароля визуально исчезают и появляются три поля для ввода-фамилия, имя и отчество(как указано в выше код) и уже заполняет фамилию, имя и отчество, логин(самостоятельно ввести для удобства-перед вставкой в БД проверить нет ли уже такого userlogin в БД) нажимает на кнопку submit-Добавить и методом POST? экранируя содержания этих полей-добавляем в БД..после успешной вставки в БД- сгенирировать пароль и вывести на экран логин и пароль с кнопкой button-Попытка входа, при нажатии которой снова попадаем на возможность ввести логин и пароль с двумя кнопками-Войти и Зарегистрироваться.... сумбурно, но как-то вот так вижу...
если нужны дополнительные поля при регистрации и есть отдельная страница регистрации то нужно ссылку на регистрацию оставлять ссылкой. если не нужны и достаточно логина-пароля то в форме должно быть две кнопки. а на стороне сервера уже различать какую бутонку жамкнул несчастный. вот. если хочется динамику на одной странице сделать то лучше "вкладками" оформить форму. юзер видит логин-пароль и сайн-ин. жмакает вкладку "регистрации" и видит другой набор полей у которого кнопка - сайн-ап.
А туплю)))пордонче) прочитал вот здесь http://php.ru/manual/function.mysql-real-escape-string.html и извиняюсь тогда получается код такой: Код (PHP): <?php $db1=mysqli_connect("localhost","e18366_dbuser","passwd1","e18366_db"); echo '<form method="POST" action="index.php"> <h3>Фамилия</h3> <input type="text" name="fam" value=""><br> <h3>Имя</h3> <input type="text" name="im" value=""><br> <h3>Отчество</h3> <input type="text" name="otch" value=""><br> <input type="submit" name="btnadduser" value="Добавить"> </form>'; if( isset ($_POST['fam'])){ $ffam=mysqli_real_escape_string($db1,$_POST['fam']); //защита от от прописки в них скрипта if(preg_match('/\W/iu',$ffam)) { $error[] = array("Введите Фамилию корректно", "ffam"); } else { // echo'Норм все.'; if( isset ($_POST['im'])){ $fim=mysqli_real_escape_string($db1,$_POST['im']); //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fim)) { $error[] = array("Введите Фамилию корректно", "fim"); } else { // echo'Норм все.'; if( isset ($_POST['otch'])){ $fotch=mysqli_real_escape_string($db1,$_POST['otch']); //защита от от прописки в них скрипта if(preg_match('/\W/iu',$fotch)) { $error[] = array("Введите Фамилию корректно", "fotch"); } else { // echo'Норм все.'; $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')"; $result=mysqli_query($db1,$query1); if (!$result){ echo "Извините Фамилия Имя Отчество не зарегистрировались в БД"; } mysqli_close($db1); } } } } } } ?> да хотелось бы реализовать именно динамику...можно попобробнее этот момент?был бы признателен
нельзя. я считаю ты не готов решать такие сложные задачи. по тебе это видно. ибо когда будешь готов твой мозг сам тебе подскажет все нужные технологии. а пока ты не знаешь с какими технологиями ты можешь работать. а уже пытаешься решить сложную задачу. я сильно против подобного. "не умеешь срать не мучай жопу" как говорится. иди всё же теорию подучи. а то мы своими знаниями поможем собрать приложение уровня портала человеку со знаниями уровня амёбы. не comme il faut чо-то.
да фактически я в целом мог понять алгоритм, но немного не понял что имелось ввиду под "на одной странице сделать то лучше "вкладками" оформить форму"? , т.е. в <form>....</form> можно создать некие вкладки?или я не так понимаю? и самое главное как оперировать с ними динамически? хотя бы подскажи в каком направлении почитать-буду искать читать, разбираться...
начать с теории программирования где ты поймешь как и с какими структурами работать. когда у тебя будет понимание основ программирования ты откроешь хэндбук по аштиэмэлю и поймешь за что отвечает то или иной тег в статике когда у тебя будут получаться статические хтмл страницы ты перейдешь к такому короткому но очень важному материалу как каскадные таблицы стилей. ты поймешь математику компиляции стиля и научишься разным смешным динамическим трюкам без использования какого-либо языка программирования будь то на стороне сервера или клиента. когда у тебя будет красивый и грамотно оформленный статический код ты встанешь на развилке. с одной стороны у тебя будет динамическая генерация статического кода - пхп или любой доступный язык программирования которому веб-сервер может отправить запрос от клиента. а по другую сторону у тебя будет динамика на стороне клиента. естественно для начала это будет джаваскрипт невероятно мощный и интересный язык программирования который очень сильно отличается от того к чему ты привыкнешь на пхп. но он даст тебе возможность писать полноценные приложения при грамотном сочетании различных технологий. и тогда ты поймешь что я подразумеваю под "оформить вкладками". потому что уже будешь знать как динамически и стилистически перерисовать страницу без ее перезагрузки. будешь знать как работают фронтэнды и бэкэнды. и таких вопросов не возникнет. о того что я тебе сейчас скажу что заветное джаваскрипт+сиэсэс тебе понятнее не станет потому что для тебя это все еще темнейший лес. ты еще не знаешь html и алгоритмы а уже пытаешься делать php+html+css+javascript+mysql. это провал. у тебя каша в голове.
Какие сутки читаю, но пока не могу понять этот JS(( вот к примеру у меня такой код на php сделал: Код (PHP): <div id="content"> <div id="go"> <h1>Введите данные</h1> <?php $Aut=0; if (mysqli_connect("localhost","dbuser","4123456","db")) { echo '<form method="POST" action="index.php"> <h3>введите логин</h3> <input type="text" name="loginuser" value=""> <h3>введите пароль</h3> <input type="text" name="passworduser" value=""> <input type="submit" name="btngo" value="Вход"> <input type="submit" name="btnreg" value="Регистрация"> </form>'; } $query10="Select `login`,`passwd` from `db`.`audit`"; $result10=mysqli_query($db1,$query10); if( isset ($_POST['loginuser'])){ $floginuser=$_POST['loginuser']; if(preg_match('/\W/iu',$floginuser)) { echo "Введите Фамилию корректно", "floginuser"; } else { echo'Норм все.'; if( isset ($_POST['passworduser'])){ $fpassworduser=$_POST['passworduser']; while ($date1=mysqli_fetch_assoc($result2)){ if ($floginuser == $date1['login']){ if ($fpassworduser == $date1['passworduser']){ //Input's fpassworduser and loginuser and submit's btngo and btnreg сделать невидимыми echo "Добро пожаловатьв личный кабинет," ,"floginuser"; } else echo "Не существует пароль- ", "floginuser"; $Aut=1; } } else echo "Нет пользователя с логином- ", "floginuser"; } } } ?> </div> <div id="registration"> <h1>Авторизация</h1> <p><h2>Заполните форму</h2></p> <?php if (mysqli_connect("localhost","dbuser","4123456","db")) { echo '<form method="POST" action="index.php"> <h3>Фамилия</h3> <input type="text" name="fam" value=""> <h3>Имя</h3> <input type="text" name="im" value=""> <h3>Отчество</h3> <input type="text" name="otch" value=""> <input type="submit" name="btnadduser" value="Добавить"> </form>'; } if( isset ($_POST['fam'])){ $ffam=$_POST['fam']; if(preg_match('/\W/iu',$ffam)) { echo "Введите Фамилию корректно", "ffam"; } else { echo'Норм все.'; if( isset ($_POST['im'])){ $fim=$_POST['im']; if(preg_match('/\W/iu',$fim)) { echo "Введите Фамилию корректно", "fim"; } else { echo'Норм все.'; if( isset ($_POST['otch'])){ $fotch=$_POST['otch']; if(preg_match('/\W/iu',$fotch)) { echo "Введите Фамилию корректно", "fotch"; } else { echo'Норм все.'; $db1=mysqli_connect("localhost","dbuser","4123456","db"); $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')"; $result=mysqli_query($db1,$query1); if (!$result){ echo "Извините Фамилия Имя Отчество не зарегистрировались в БД, попробуйте ещё раз"; } mysqli_close($db1); } } } } } } ?> </div> </div> примерно графически что имелось ввиду аутентификация.jpg и теперь реализовать взаимозаменяемость динамически этих двух div's в общем div'e по нажатию соотв кнопок. пока не могу разобраться как реализовать функциональность через JS((
вообщем я пока прочитал пару статей, мануалов, в википедии... вообщем я примерно понял, что ты имел ввиду под вкладками... Поправь меня если я не правильно что-то понял... вообщем мне нужно впринципе код по-иному переписать.... в данном случае 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) ... пока только теория...думаю как всё оформить и переписать...пока трудно конечно сразу((
ну трудно, но лишь потому что ты пытаешься построить небоскреб не окончив и даже не поступив в строительный институт... я уже устал одно и то же тебе объяснять. вот эта вот тряпка выше меня чуть под стол не отправила. функциональность через классику... извини за мою испорченность но есть еще видимо функциональность оральная, анальная и групповая... шлюхами никогда не пользовался, поэтому могу ошибаться. как ты пишешь код дело полностью твое. ты просто соединяешь же разные технологии. но когда ты не умеешь соединять то тебе читать про технологии не нужно. забей. вот просто забей. я реально не понимаю чо ты такой упёртый и лезешь не по своему уровню проекты делать. задача с табами простая. но для человека который ПОНИМАЕТ. ты не понимаешь. занавес...
Ну убедил...почитал различную мануалы.... вообщем вот так вот переделал: -почитал -дописал -переделал index.php Код (PHP): <!DOCTYPE html> <html> <head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> <meta name="description" content=""> <meta name="author" content=""> <link rel="stylesheet" href="style.css"> <script type="text/javascript" src="js/my.js"></script> <script type="text/javascript" src="js/jquery-2.1.1.min.js"></script> </head> <body> <div id="content"> <div id="go"> <h1>Вход в личный кабинет</h1> <h3>Введите ваш логин</h3> <input type="text" id="loginuser" value=""> <h3>Введите ваш пароль</h3> <input type="text" id="passworduser" value=""> <input type="button" onclick="testenter()" name="btngo" value="Вход"> <input type="button" onclick="testreg()" name="btnreg" value="Регистрация"> </div> <div id="registration" stylе='display="none"'> <h1>Авторизация</h1> <p><h2>Заполните форму</h2></p> <h3>Фамилия</h3> <input type="text" id="fam" value=""> <h3>Имя</h3> <input type="text" id="im" value=""> <h3>Отчество</h3> <input type="text" id="otch" value=""> <h3>Логин</h3> <input type="text" id="loginuser" value=""> <h3>Пароль</h3> <input type="text" id="passworduser" value=""> <input type="button" onclick="testadduser()" id="btnadduser" value="Отправить"> </div> </div> </body> </html> вот такой я выделил отдельно и создал в директории вместе с index.php скрипт auth.php Код (PHP): <?php $result=0; $db1=mysqli_connect("localhost","dbuser","passwd1","db"); if ($db1) { $query10="Select * from `db`.`audit`"; $result10=mysqli_query($db1,$query10); if( isset ($_POST['loginuser'])) { $floginuser=$_POST['loginuser']; if(preg_match('/\W/iu',$floginuser)) { //echo "Введите Фамилию корректно", "floginuser"; $result=3; } else { //echo'Норм все.'; $result=4; if( isset ($_POST['passworduser'])) { $fpassworduser=$_POST['passworduser']; while ($date1=mysqli_fetch_assoc($result2)) { if ($floginuser == $date1['login']) { if ($fpassworduser == $date1['passworduser']) { //Input's fpassworduser and loginuser and submit's btngo and btnreg сделать невидимыми //echo "Добро пожаловатьв личный кабинет," ,"floginuser"; $result=1; } else //echo "Не существует пароль- ", "floginuser"; $result=5; } } } else $result=6;//echo "Нет пользователя с логином- ". "floginuser"; } } } echo $result; //echo "'$result'"; ?> вот такой скрипт написал для регистрации отдельно его выделил, также возле index.php лежит и назвал reg.php Код (PHP): <?php $res=0; $err=0; $db1=mysqli_connect("localhost","dbuser","passwd1","db"; if ($db1) { if( isset ($_POST['fam'])) { $ffam=$_POST['fam']; if(preg_match('/\W/iu',$ffam)) { //echo "Введите Фамилию корректно", "ffam"; $err=1; } else { //echo'Норм все.'; if( isset ($_POST['im'])) { $fim=$_POST['im']; if(preg_match('/\W/iu',$fim)) { //echo "Введите Имя корректно", "fim"; $err=2; } else { //echo'Норм все.'; if( isset ($_POST['otch'])) { $fotch=$_POST['otch']; if(preg_match('/\W/iu',$fotch)) { echo "Введите Отчество корректно", "fotch"; $err=3; } else { //echo'Норм все.'; if( isset ($_POST['loginuser'])) { $flogin=$_POST['']; if(preg_match('/\W/iu',$flogin)) { //echo "Введите login корректно", "login"; $err=4; } else { //echo'Норм все.'; if( isset ($_POST['passworduser'])) { $fpassworduser=$_POST['passworduser']; if(preg_match('/\W/iu',$fpassworduser)) { //echo "Введите Пароль корректно", "fpassworduser"; $err=5; } else { //echo'Норм все.'; $db1=mysqli_connect("localhost","dbuser","passwd1","db"; $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')"; $result=mysqli_query($db1,$query1); $query12="INSERT INTO `db`.`audit` (`login`, `passworduser`) VALUES ('$flogin', '$fpassworduser')"; $result12=mysqli_query($db1,$query12); if (!$result) { //echo "Извините Фамилия Имя Отчество не зарегистрировались в БД, попробуйте ещё раз"; $err=6; } else { if (!$result12) { //echo "Извините Логин и пароль не зарегистрировались в БД, попробуйте ещё раз"; $err=7; } else { $res=1; } } mysqli_close($db1); } } } } } } } } } } } echo $res; ?> а вот такой javascript написал и положил его в /js/ назвал my.js Код (Text): function testenter(){ loginjs=document.getElementById("loginuser").value; pwdjs=document.getElementById("passworduser").value; alert(loginjs); alert(pwdjs); $.post("auth.php", {"loginuser":loginjs, "passworduser":passwduserjs},function(data) { if (data == '1') { alert('Ok auth'); } else { alert('No auth'); } }); } function testreg(){ */ document.getElementsById('go').style.display ='none'; document.getElementsById('registration').style.display ='block'; */ $("#go").hide(); $("#registration").show(); } function testadduser(){ famjs=document.getElementById("fam").value; imjs=document.getElementById("im").value; otchjs=document.getElementById("otch").value; loginuserjs=document.getElementById("loginuser").value; passwduserjs=document.getElementById("passwduser").value; $.post("reg.php", {"fam":famjs, "im":imjs, "otch":otchjs, "loginuser":loginuserjs, "passworduser":passwduserjs},function(data) { if (data == '1') { alert('Ok reg'); } else { alert('No reg'); } }); */ document.getElementsById('go').style.display ='block'; document.getElementsById('registration').style.display ='none'; */ $("#registration").hide(); $("#go").show(); } но не работает((даже почему-то div id=registration сразу виден при загрузке, не говоря о функционировании
ты издеваешься? ты знаешь как жаваскрипт работает? нет? а хренли полез реализацию на фреймворках делать? ты издеваешься? ты алгоритмизацию изучил? вот эта тряпка в 11 уровней нестинга показывает что данными ты не умеешь манипулировать. а уже поставил перед собой задачу сделать сложный проект. ты издеваешься? ты читал свой html-исходник? выбор кодировки за тобой безусловно. инлайн скриптинг тоже твое личное дело. меня вот лично удивили ссылки относительно документа. ты еще не освоил локацию в гипертексте а уже пытаешься сделать сложный проект с манипулированием данными. ой тебя сколько приколов ждет... мама не горюй. то есть. ты не освоил гипертекст (статику) а уже лезешь на уровень выше - стили ты еще не освоил "законченную" статику (html+css) а уже лезешь на уровень выше - динамику на пхп ты еще не освоил базиса программирования а уже пытаешься написать алгоритм - динамику на пхп ты еще не освоил базиса программирования и статику а уже лезешь уровнем выше - динамика на стороне клиента ты еще нифига не освоил а уже пытаешься слепить усё вместе - html+php+css+javascript результат "но не работает((" это ровно тот результат которого ты заслуживаешь когда бежишь впереди паровоза. ты тыкаешь пальцем в небо. небу больно и оно не хочет тебе помогать. Добавлено спустя 1 минуту 18 секунд: для твоего удобства я каждый раз буду старательно придумывать что-нибудь новое но на одну и ту же тему. ты ж вместо того чтоб пойти поучиться пытаешься делать одно и то же - склепать из рандомных символов программу.