PHP: $array = array('1' => '2'); $keys = array_keys($array); $values = array_values($array); foreach( $keys as $kn => $key ) echo "Название - {$key}, значение - {$values[$kn]}";
Deathdreams Зачем так сложно? PHP: foreach( $array as $key => $value ) { echo "Ключ - $key, значение - $value"; } По моему проще.
Тема такая нужно написать чекер емалов для yahoo собстно написал, код но проблема в том что пост запрос не отправляеться. Я не давно только начал работать с курл. Есть две функции как видно из листинга первая получает значения вторая отправляет, но вот если первая работает нормально, то вторая отказываеться вообще. Да и в куки помоему вообще ничего не попадает. Собственно код не пинайте сильно 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){ $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){ $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, необходимо сделать global переменных. пример для твоего кода: Code: function SendData($url,$post,$refer){ global $cookiefile, $agent; //code } Код кривой, на ачате я когда-то выкладывал класс для проверки мыл на валид, поищи.
Есть функция для запросов в БД: PHP: function sql($query = "", $param = array()) { if (!is_array($param) || count($param) == 0) { return mysql_query($query); } else { foreach ($param as $key => $val) { $query = str_replace("{".$key."}", $val, $query); } return mysql_query($query); } } также присутствуют 2 функции от инъекций: PHP: function phpInjection($data) { $filter = array("\\", "'", ",", ";", "--", "-", "%20", "%27", " ", "`", "=", "%"); $filter_data = str_replace($filter, "", $data); return $filter_data; } PHP: function sqlInjection($data) { $filter = array("select", "delete", "union", "update", "insert"); $filter_data = str_replace($filter, "", strtolower($data)); return $filter_data; } собственно возможно ли объеденить все функции в 1? чтобы запросы были с проверкой на безопастность...
Да, не изобретать велосипел и использовать встроенные механизмы нормальной работы с БД. google://php pdo mysql http://phpfaq.ru/slashes#prepared
PHP: function filtr($data) { $filter = array("select", "delete", "union", "update", "insert","\\", "'", ",", ";", "--", "-", "%20", "%27", " ", "`", "=", "%"); $filter_data = str_replace($filter, "", strtolower($data)); return $filter_data; } function sql($query = "", $param = array()) { if (!is_array($param) || count($param) == 0) { return mysql_query(filtr($query)); } else { foreach ($param as $key => $val) { $query = str_replace("{".$key."}", $val, $query); } return mysql_query(filtr($query)); } } tak?
ну а также UnIoN , upDate и т.п. нольбайт тож пройдет... короче, mysql_real_escape_string() в помощь... только логику скрипта придется переделывать
AtomoS, твоя защита легко обходится, зачем изобретать велосипед, для этого есть соотвествующие функции. Числовые поля int, текстовые mysql_real_escape_string() + обрамлять в кавычки. При выводе всех значений на экран обрабатывать htmlspecialchars, вот и все, и ненужно никаких str_replace.
2Deathdreams and 2All Объявил как global так и не решило задачу. Проглядел все твои месаги так и не нашел класса для верификации мыл. Код я набросал за 15 мин, мог бы сделать и ООП, но для тмоей задачи это из пушки по воробъям, если криво-та еще где-то укажи, сам не люблю гавно код. Проблема все таже не отправляеться пост запрос, не получаю куки.
Здравствуйте, наверняка этот вопрос уже задавался, однако, после двух часов поиска, мои успехи ни чуть не изменились. Заранее скажу, что есть два скрипта : "ВВод" и "Вывод" Проблемма стара как мир : вставить в MySQL базу кириллические символы. Суть в том, что я хочу вставить непосредственно со скрипта ВВОДА( написанном на php). Например, у меня есть "<input type='text'...>", откуда я хочу вытянуть строку и закинуть ее в таблицу. Кодировка таблицы : utf8_general_ci (пробовал и cp1251) Кодировка поля в таблице - такая же (Пробовал и cp1251) mysql_query('SET NAMES cp1251');(или utf8) - поставил сразу после подключения. если вставлять через PHPMyAdmin - все чудесно вставляется и отображается(как в самом админе, так и в скрипте вывода). Если вставлять через скрипт ввода, вытягивая строку из текстбокса, то админ отображает нечто такое : "³³³³", а скрипт вывода : "ûâàûâàûâ". ЧТО Я ДЕЛАЮ НЕ ТАК, на что обратить внимание и вообще...как справиться с проблеммой. ___ version mysql 5,php 5 __ в му.ini везде кодировка стоит cp1251
PHP: <?php header("Content-Type: text/html; charset=utf8"); //....коннект к бд mysql_query("SET NAMES utf8"); ?> <form action="<?=$_SERVER['PHP_SELF'];?>" method="POST"> <input type=text name="str" value="" ><input type=submit value="В бд"> </form> <?php if(!empty($_POST['str']) && !is_array($_POST['str'])) { $result = mysql_query("INSERT INTO `table`(str) VALUES('".mysql_real_escape_string($_POST['str'])."')"); if($result == 1) echo "Успешно запостилось"; } ?> не?
снестите таблицу, создайте ее заново из бэкапа (пустую, с указаной кодировкой utf-8_general_ci). а дальше следуйте инструкциям: источник
не находишь бредом указывать кодировку 2 раза? =\ это всеравно что PHP: <?php header("Content-Type: text/html; charset=utf8"); ?> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> ...