Всем доброе время суток! Cразу в кратце есть основной html-документ index.php, в части касаемо проблемы сл содержания(вызывается обработчик testsenduser() ) Код (PHP): <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf8"> <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> <title>официальный сайт</title> </head> <body> ... <input type="text" id="loginuser1" value=""> <input type="text" id="passworduser1" value=""> <input type="textuser" id="senduser" value=""> <input type="button" onclick="testsenduser()" id="btnsenduser" value="Отправить"> ... </body> </html> Функционирование обработчика описано в java-scripte в виде my.js , в части касаемо проблемы сл содержания Код (Text): function testsenduser(){ loginjs=document.getElementById("loginuser1").value; pwdjs=document.getElementById("passworduser1").value; send=document.getElementById("senduser").value; $.ajax({async:true,cache:false,type: "POST", url:'mail.php',data:{"user":loginjs,"mail":send},dataType:"json",success:function(data) { alert ('status= '+data.status); } }); }; Php-срипт в виде mail.php непосредственно делает отправку send от юзера и имеет сл содерджание: Код (PHP): <?php $name='No name'; $id_s=''; $db1=mysqli_connect("host","userbd","pwdbd","namebd"); if ($db1) { // $name='Select * from `bd`.`audit` where login='.$_POST['user'].''; $query2="SET NAMES utf8"; $result=mysqli_query($db1,$query2); $query1='Select * from `bd`.`audit` where login=`'.$_POST['user'].'`'; $result1=mysqli_query($db1,$query1); // $name=''$_POSTuser; while ($date1=mysqli_fetch_assoc($result1)) { $id_s=$date1['id_sotr']; //$name='id= '.$id_s; } $query1='Select * from `bd`.`sotrud` where id_sotr='.$id_s.''; $result1=mysqli_query($db1,$query1); while ($date1=mysqli_fetch_assoc($result1)) { $name=$date1['Im']; } } mysqli_close($db1); $status='No'; $to = "info@yandex.ru" ; $subject = 'Сообщение от клиента '.$name.' ; $message = ' <html> <head> <title charset=utf8 \r\n>Обращение </title> </head> <body> <p> От пользователя логин: '.$_POST['user'].' имя '.$name.'</p> <p>'.$_POST['mail'].'</p> </body> </html>'; $headers = "Content-type: text/html; charset=utf8 \r\n"; $email='sdf@mail.ru'; $headers .= "From:".$_POST['user']." <".$email.">\r\n"; $headers .= "Bcc: ".$email."\r\n"; $res=mail($to, $subject, $message, $headers); if ($res==true) { $status='Yes'; } $out=array(); $out['status']=''.$status; $out['names']=''.$name; echo json_encode($out); ?> Вообщем проблема вот какая не отрабатывается вот эти строки: Т.е. в $query1 если было вбит логин Vasya1980 к примеру присваивается значение вот такое-цитирую это я проверял точно поле login в БД audit имеет тип поле text Как я понимаю синтаксически sql-запрос в части касаемо вот этого сочетания должен понимать, что условие селекта в sql-запросе является то, что Где поле login рана текстовому значению Vasya1980 В БД audit есть запись, где поле login имеет значение Vasya1980-это факт, проверял Но почему-то не находит он эти строки, т.е. фактически не срабатывает sql-запрос Что не так синтаксически я прописываю вот в этой строке? я уже пробовал разные варианты 1.$query1='Select * from `bd`.`audit` where login='.$_POST['user'].''; 2.$query1='Select * from `bd`.`audit` where login="'.$_POST['user'].'"'; 3.$query1='Select * from `bd`.`audit` where login='\'.$_POST['user'].''\'; не получается(( т.е. $_POST['user'] имеет значение в данном примереVasya1980 текстовое mail.php получает нормально это значение, но у меня не получается это значение использовать в sql-запросе(((в синтаксисе что-то((
Re: проблема $_POST['peremennaya']->php-скрипт>формирование 1. у тебя как-то получилось сделать стандартную ошибку новичков. но как-то через жопу. обычно апостроф используют в обрамлении имён а ты используешь гравис для обрамления строки. $query1='Select * from `bd`.`audit` where login=`'.$_POST['user'].'`'; замени на $query1="Select * from `bd`.`audit` where login='{$_POST['user']}'"; 2. а где экранирование-то? если я прикинусь шлангом и моё имя будет 0;DELETE FROM audit - у тебя случайно потрется вся табличка. ой 3. пвд это принт ворк директори - системная утилита, показывающая текущий рабочий каталог процесса. для сокращения "пароля" не самый удачный нейминг имхо
Ты имеешь ввиду вот так это правильно делать...где-то ты мне уже это писал-я немного подзабыл-посмотрел ранее мои постыи вроде экранирование можно сделать через функцию preg_match ( проверка на соответствие по регулярному выражению), т.е. в итоге мой php-срипт в виде mail.php должен выглядеть так, что бы в input не заталкать код вместо ожидаемого значения Код (PHP): <?php $name='No name'; $id_s=''; $login=$_POST['user'] $db1=mysqli_connect("host","userbd","passwd","namebd"); if ($db1) { if(preg_match('/\W/iu', $login)) { $name ="Введено не логин"; } else { // $name="Select * from `bd`.`audit` where login='{$login}'''; $query2="SET NAMES utf8"; $result=mysqli_query($db1,$query2); $query1="Select * from `bd`.`audit` where login='{$login}'"; $result1=mysqli_query($db1,$query1); // $name=''$_POSTuser; while ($date1=mysqli_fetch_assoc($result1)) { $id_s=$date1['id_sotr']; //$name='id= '.$id_s; } $query1='Select * from `bd`.`sotrud` where id_sotr='.$id_s.''; $result1=mysqli_query($db1,$query1); while ($date1=mysqli_fetch_assoc($result1)) { $name=$date1['Im']; } } } mysqli_close($db1); $status='No'; $to = "info@yandex.ru" ; $subject = 'Сообщение от клиента '.$name.' ; $message = ' <html> <head> <title charset=utf8 \r\n>Обращение </title> </head> <body> <p> От пользователя логин: '.'{$login}'.' имя '.$name.'</p> <p>'.$_POST['mail'].'</p> </body> </html>'; $headers = "Content-type: text/html; charset=utf8 \r\n"; $email='sdf@mail.ru'; $headers .= "From:".$_POST['user']." <".$email.">\r\n"; $headers .= "Bcc: ".$email."\r\n"; $res=mail($to, $subject, $message, $headers); if ($res==true) { $status='Yes'; } $out=array(); $out['status']=''.$status; $out['names']=''.$name; echo json_encode($out); ?> но так вообще перестало работать(( в консоле Инструментах разработчика выскакивает ошибка я как-то коряво функцию preg_match видимо использую синтаксически снова((разные вариант пробую-пока без результатно(( Добавлено спустя 4 минуты 7 секунд: Re: проблема $_POST['peremennaya']->php-скрипт>формирование sql а всё)))нашёл))снова эта моя техническая невнимательность(((но уже хоть стал находить эти ошибки-уже хорошо)) забыл поставить ; после строки $login=$_POST['user'] Пордонче за тупизм)
Re: проблема $_POST['peremennaya']->php-скрипт>формирование нет, экранирование это не проверка регуляркой...
Re: проблема $_POST['peremennaya']->php-скрипт>формирование Что-то посты ранее смотрю, гуглю-что-то функцию, которая экранирует символы не вижу впритык(( МБ вот так тогда? но тогда sql-запрос получится такой((если ввели логин Vasya1980 и он не исполнится((м-да..пока думаю, ищу...
Re: проблема $_POST['peremennaya']->php-скрипт>формирование у тебя арабский гугол штоль? почему мне первые 15 страниц выводит требуемый материал? mysqli_real_escape_string() - всё что от тебя требовалось
вообщем тогда мой mail.php должен выглядеть так Код (PHP): <?php $name='No name'; $id_s=''; $login=mysqli_real_escape_string($_POST['user']); $db1=mysqli_connect("host","userbd","passwd","namebd"); if ($db1) { // $name="Select * from `bd`.`audit` where login='{$login}'''; $query2="SET NAMES utf8"; $result=mysqli_query($db1,$query2); $query1="Select * from `bd`.`audit` where login='{$login}'"; $result1=mysqli_query($db1,$query1); // $name=''$_POSTuser; while ($date1=mysqli_fetch_assoc($result1)) { $id_s=$date1['id_sotr']; //$name='id= '.$id_s; } $query1='Select * from `bd`.`sotrud` where id_sotr='.$id_s.''; $result1=mysqli_query($db1,$query1); while ($date1=mysqli_fetch_assoc($result1)) { $name=$date1['Im']; } } mysqli_close($db1); $status='No'; $to = "info@yandex.ru" ; $subject = 'Сообщение от клиента '.$name.' ; $message = ' <html> <head> <title charset=utf8 \r\n>Обращение </title> </head> <body> <p> От пользователя логин: '.'{$login}'.' имя '.$name.'</p> <p>'.$_POST['mail'].'</p> </body> </html>'; $headers = "Content-type: text/html; charset=utf8 \r\n"; $email='sdf@mail.ru'; $headers .= "From:".$_POST['user']." <".$email.">\r\n"; $headers .= "Bcc: ".$email."\r\n"; $res=mail($to, $subject, $message, $headers); if ($res==true) { $status='Yes'; } $out=array(); $out['status']=''.$status; $out['names']=''.$name; echo json_encode($out); ?> ))) скорее китайский)))я же от Китая не далеко)))граничим с ними) Добавлено спустя 6 минут 36 секунд: Re: проблема $_POST['peremennaya']->php-скрипт>формирование sql блин...вроде отрабатывает, но теперь вот эта строчка не отрабатывает показывае $name=0, а ожидаю данные с поля Im-там в качестве примера слово Василий, а не 0 $name получается на основании sql-запроса, т.е. вот эта строка снова в эту же строку упёрся(...пока ищу причину
Re: проблема $_POST['peremennaya']->php-скрипт>формирование балин, ну чо ты по граблям-то бегаешь? ты уже не первый день с пыхом - уже можно требовать от тебя работающую голову. ну или брось нафиг в новогодние каникулы каким-то там неведомым программированием заниматься. когда ты делаешь мускульный эскейп строки то ты готовишь данные ДЛЯ МУСКУЛА. какой такой (прямой?) извилиной ты решил использовать этот же подготовленный ДЛЯ МУСКУЛА текст для постановки в письмо????????????????????
Re: проблема $_POST['peremennaya']->php-скрипт>формирование ты имеешь ввиду вот так? но у меня больше не вывод логина в письме интересует, а считываемой из БД $name а она почему-тоу меня считывает яко бы 0 вместо Василий в качестве примера после второй query на оcвновании полученного id_sotr по первому query считывается соотв значение поля Im, которая соответсвует вычисленному id_sotr по первому query Im и id_sotr разных таблицах хранятся и разное кол-во полей в них и типы полей используемые разные не могу понять всё же вычисляло нормально и вытаскивало Василий , а не 0
Посидел поразбирался самостоятельно, yj всё уже больше нет вариантов в голове(( вот содержание БД sotrud http://i64.fastpic.ru/big/2015/0110/82/a62048f5356f05e716fa21c32e069482.jpg вот содержание БД audit http://i64.fastpic.ru/big/2015/0110/fe/fbc577890e83a493325a208e711e66fe.jpg вот php-скрипт mail.php Код (PHP): <?php $status='No'; $name='No name'; $id_s=''; $per=$_POST['user']; $db1=mysqli_connect("host","userbd","passwd","bd"); if ($db1) { $query="SET NAMES utf8"; $result=mysqli_query($db1,$query); $query="Select * from `audit` where login='{".mysqli_real_escape_string($_POST['user'])."}'"; $result=mysqli_query($db1,$query); while ($date1=mysqli_fetch_assoc($result)) { $id_s=$date1['id_sotr']; } $query='Select * from `sotrud` where id_sotr='.$id_s.''; $result=mysqli_query($db1,$query1); while ($date1=mysqli_fetch_assoc($result1)) { $name=$date1['Im']; } } mysqli_close($db1); $to = "info@yandex.ru" ; $subject = 'Сообщение от '.$name.' человека'; $message = ' <html> <head> <title charset=utf8 \r\n>Обращение</title> </head> <body> <p> От пользователя логин: '.$_POST['user'].' c именем '.$name.'</p> <p>'.$_POST['mail'].'</p> </body> </html>'; $headers = "Content-type: text/html; charset=utf8 \r\n"; $email='sdf@mail.ru'; $headers .= "From:".$_POST['user']." <".$email.">\r\n"; $headers .= "Bcc: ".$email."\r\n"; $res=mail($to, $subject, $message, $headers); if ($res==true) { $status='Yes'; } $out=array(); $out['status']=''.$status; $out['names']=''.$name; $out['$id_s']=''.$id_s; $out['$per']=''.$per; echo json_encode($out); ?> вот что сервер выдаёт(( почему $id_s не равен 7, и names не равен Василий? Я гуглил, сравнивал, анализировал, но не вижу причину почему и соотв не могу понять как что не так и почему так((
Re: проблема $_POST['peremennaya']->php-скрипт>формирование Так используй отладку http://phpfaq.ru/debug
Так...добавил в самом начале php-срипта mail.php журналирование всех ошибок, т.е. строки Код (PHP): if (ini_get('display_errors') != 1) { ini_set('display_errors', 1); } error_reporting(E_ALL); ещё раз проделал действия, которые описаны выше по посту...сервер теперь выдал мне три Warning'ов и после них+предыдущий результат, а именно вот такие Первый Warning ругается на вот эту строку в php-срипте Т.е. функция mysqli_real_escape_string ожидает 2 параметра, а указан 1 параметр, но по мануалу смотрю-ей нужно указать 1 парметр-строку, что собственно я и сделал-пока не могу понять почему Warning вытаскивается((если кто знает-подскажите причину далее второй Warning ругается вот на эту строку скрипта где значение $query было получено ранее по коду через ещё ранее полученное значение переменной $id_s а в этом Warning'е говорится то что запрос пустой(( И соответственно последний Warning ругается на вот эту строку в коде ну это уже понятно...фетчить нечего... Т.е. всё так же возвращаюсь к тому, что в переменную $id_s я не смог получить id_sotr через введённый пользователь логин (т.е. через логин сформировать sql-запрос и тем самым найти строчку где есть этот логин и считать в этой строке поле id_sotr) Т.е. вот эта строка проблемная При этом проверено (см пост выше), что скрипт знает значение $_POST['user'] Или sql не правильно сформирован или хз(( При этом я проверил сам sql-запрос в БД не через скрипт, а через менеджер по работе с БД, если я забиваю sql-запрос вот аткого вида То запись в БД находится и там в ней поле id_sotr=7 Но на этой строке кода выдаёт и самую первое предупреждение mysqli_real_escape_string() expects exactly 2 parameters, 1 given in прочитал манул, ведь правильно же использую почему говорит что нет?
Re: проблема $_POST['peremennaya']->php-скрипт>формирование блин у меня просто слов нет. ты так тупишь... пишет он тебе мол апи функции ТРЕБУЕТ ТЮТЕЛЬКА В ТЮТЕЛЬКУ ДВА АРГУМЕНТА НЕ БОЛЬШЕ НЕ МЕНЬНЕ НЕ ОДИН НЕ ТРИ НЕ ПОЛТОРА А ДВА. и мануал всё четко показывает. а ты передаешь ей один аргумент и сидишь думаешь что же это она балять такая не работает. да ей тупо не хочется работать с человеком который голову не включает. она капризничает. она просит нормального программиста.
Re: проблема $_POST['peremennaya']->php-скрипт>формирование вот так что ли? второй параметр функции явл link_identifier- идентификатор соединения с мускулом, а это $db1 Добавлено спустя 4 минуты 16 секунд: Re: проблема $_POST['peremennaya']->php-скрипт>формирование sql я вот так исправил в строке кода но теперь вообще данный mail.php вызывается, но ни чего не возвращает...лещу в консоль там написано 8 строка в my.js это вызов через аякс скрипта mail.php
после того как я указал второй параметр функции и перезалил на хостинг, пробую отправить на мыло сообщение-в Инстурментах разработчкиа на хроме вызываемый php-скрипт mail.php подкрашивается красным цветом-но ничего сервер не выдаёт Status Code:500 Internal Server Error поэтому я полез в консоль-а там написано то что я выше писал Добавлено спустя 2 минуты 21 секунду: Re: проблема $_POST['peremennaya']->php-скрипт>формирование sql Код (PHP): <?php if (ini_get('display_errors') != 1) { ini_set('display_errors', 1); } error_reporting(E_ALL); $status='No'; $name='No name'; $id_s=''; $per=$_POST['user']; $vardump=''; $db1=mysqli_connect("host","userdb","password","bd"); if ($db1) { $query="SET NAMES utf8"; $result=mysqli_query($db1,$query); $query="Select * from `audit` where login='{".mysqli_real_escape_string($_POST['user'],$db1)."}'"; $result=mysqli_query($db1,$query); // $vardump=var_dump($result); while ($date1=mysqli_fetch_assoc($result)) { $id_s=$date1['id_sotr']; } $query='Select * from `sotrud` where id_sotr='.$id_s.''; $result=mysqli_query($db1,$query); //$vardump=var_dump($result); vju { $name=$date1['Im']; } } mysqli_close($db1); $to = "info@yandex.ru" ; $subject = 'Сообщение от '.$name.' человека'; $message = ' <html> <head> <title charset=utf8 \r\n>Обращение </title> </head> <body> <p> От пользователя логин: '.$_POST['user'].' c именем '.$name.'</p> <p>'.$_POST['mail'].'</p> </body> </html>'; $headers = "Content-type: text/html; charset=utf8 \r\n"; $email='sdf@mail.ru'; $headers .= "From:".$_POST['user']." <".$email.">\r\n"; $headers .= "Bcc: ".$email."\r\n"; $res=mail($to, $subject, $message, $headers); if ($res==true) { $status='Yes'; } $out=array(); $out['status']=''.$status; $out['names']=''.$name; $out['id_s']=''.$id_s; $out['per']=''.$per; $out['vardump']=''.$vardump; echo json_encode($out); ?>
Re: проблема $_POST['peremennaya']->php-скрипт>формирование не, ну круто. а ты то как тебе жена борщ посолила тоже через джаваскрипт-консольку проверять будешь? скрипт у тебя сыпется. на сервере. в аякс ничего не приходит. но он не знает что у тебя там посыпалось. поэтому консоль лишь отчитывается что джаваскрипт принял не то что ожидал.
Re: проблема $_POST['peremennaya']->php-скрипт>формирование так я о том же...я и писал в начале , что скрипт сам вызывается-но не стал работать(красным даже цветом подсвечивается при вызове) и это стало после того как я внёс изменения по кол-ву параметров в функцию в одной из строки кода скрипта только и всего-но после получил не работающий скрипт...не могу понять почему так произошло...коннект к БД есть точно, query не пустое тоже...
Re: проблема $_POST['peremennaya']->php-скрипт>формирование так а разве я отладку не так делаю? 1вкл журналирование всех ошибок в разные этапы кода пытаюсь посмотреть значения ряд переменных и т.п. а в ответ вообще тишина от сервера(( а как ещё отлаживать? уже по нескольким моментам отлаживаю-не получается найти
Re: проблема $_POST['peremennaya']->php-скрипт>формирование ну а как ещё?))я так думал делать нужно)почитал-вот так и пытаюсь отладить)
Re: проблема $_POST['peremennaya']->php-скрипт>формирование ну ты подумай еще. мануал там не знаю пойди почитай. помогает.
Re: проблема $_POST['peremennaya']->php-скрипт>формирование практичный совет))а до этого я что делал?))я же не останавливаюсь в поиске-так же паралельно читаю мануалы, гуглю, сообщения различные смотрю, статьи...но пока не получается найти то что ищу...либо не могу вникнуть до конца, т.к. новичок, либо просто не так ищу Добавлено спустя 7 минут 55 секунд: Re: проблема $_POST['peremennaya']->php-скрипт>формирование sql вот к примеру статья...но я так и делаю как там написано http://info-pages.com.ua/e/117
Re: проблема $_POST['peremennaya']->php-скрипт>формирование "не так ищу" заключается в том что ты что-то ищешь. ты очень ограничен. вместо того чтоб бросить всё нахер, сесть, ознакомиться с мануалом по инструменту, узнать всю его ширину и понять как можно отлаживать. например отсутствие результата на экране с красненькой строчкой и статусом 500 в консольке сообщает об ошибке на стороне сервера. то как ты включаешь вывод ошибок на этапе исполнения - я тебя очень поздравляю с этим. потому что ты только это и знаешь. а то что до этого есть этап трансляции - ты не знаешь. и что на этом этапе если что-то не так пойдет то пых упадет - ты не знаешь. и что пых обязательно напишет что не так - ты не знаешь. и куда напишет - ты не знаешь. и как изменить чтоб писал не только туда - ты не знаешь. зато ты уже с аяксом работаешь. это ты молодец. но ты не понимаешь с каким инструментом ты работаешь. это неправильно. но твое ограниченное мышление не дает тебе признаться в том что ты не знаешь инструмент с которым работаешь. ты ограничен тем что у тебя сейчас какая-то ошибка и тебе её срочно надо решить потому что пожар самолет и всё такое. это абсолютно нормально. ты НЕ хочешь изучить инструмент - он не особо хочет нормально работать. восстание машины против человека который забывает что он сапиенснее компа должен быть.