0o Chris o0 Помимо указанных ошибок у вас также неправильно используется цикл for. Который никогда не завершится. Было: PHP: //Делим html на строки for($i=0; $i++; $i<count($html)-1) { Должно быть: PHP: for($i=0; $i<count($html)-1; $i++) {
Не совсем понял где конкретно эти файлы, толи ты грабишь их, толи это твои, но заменить текст между двумя текстовыми частями можно функцией explode(). Пример: $left_part = explode('<!--begin-->', $text); $left_part = $left_part[0]; $right_part = explode('<!--end-->', $text); $right_part = $right_part[count($right_part)-1]; $new_text = $left_part . $some_text . $right_part;
Можно ли средствами php выполнить поиск по переменным задействованным в выполняемом скрипте? допустим нужно каким-то образом проверить все переменные на union, select - если обнаружено - не выполняем скрипт. или написать функцию-класс которая будет проверять post & gate? этого хватит чтобы обезопасить скрипт?
Kruzak на первый вопрос - да, можно провести поиск по всем переменным. На остальное - с данными нужно правильно обращаться и если уж делать фильтрацию, то по белому списку, а не по черному. Откройте для себя модуль PDO в пхп.
Подправил код: PHP: $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $html = curl_exec($curl); $separator = ' '; $html = explode($separator, $html); for($i=0; $i<count($html)-1; $i++) { if (preg_match('/href=\"\/photo/', $html[$i], $result)) { $new = ''; $old = 'href="'; $results[$i] = str_replace($old, $new, $result); } } print_r($result); ?> Но массив $result пустой, думаю из-за того, что в строке PHP: $results[$i] = str_replace($old, $new, $result); $result - массив, а не строка, пробовал сделать так: PHP: if (preg_match('/href=\"\/photo/', $html[$i], $result[$i])) { и $results[$i] = str_replace($old, $new, $result[$i]); Чтобы сохранял в $result[$i] строки с вхождениями, а потом уже заменять, но получил в ответ такое: PHP: Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) [12] => Array ( ) [13] => Array ( ) [14] => Array ( ) [15] => Array ( ) [16] => Array ( ) [17] => Array ( ) [18] => Array ( ) [19] => Array ( ) [20] => Array ( ) [21] => Array ( ) [22] => Array ( ) [23] => Array ( ) [24] => Array ( ) [25] => Array ( ) [26] => Array ( ) [27] => Array ( ) [28] => Array ( ) [29] => Array ( ) [30] => Array ( ) [31] => Array ( ) [32] => Array ( ) [33] => Array ( ) [34] => Array ( ) [35] => Array ( ) [36] => Array ( ) [37] => Array ( ) [38] => и так далее. Что не так?
Теряется сессия после редиректа: PHP: session_start(); $_SESSION['id_vk']=123456; $_SESSION['auth_vk']='qwerty'; $_SESSION['auth']=1; $_SESSION['vip']=1; После чего редирект на другую страницу, куки не удалялись. Вывод из новой страницы: Почему некоторые остались, а в остальных пусто?
Как правильно указать папку для перемещения загруженных файлов на сервере? PHP: move_uploaded_file($_FILES["filename"]["tmp_name"], "/mj2/public_html/1/ab/images/".$_FILES["filename"]["name"]); Мне вот сюда нужно: /mj2/public_html/1/ab/images/
#19589 все еще актуально. Появился еще один вопрос: начиная с какой версии в php появилась поддержка названий переменных кирилицей и цифрами?
mff Попробуй так: PHP: move_uploaded_file($_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."/1/ab/images/".$_FILES["filename"]["name"]);
По этому куску кода определить причину невозможно. Вероятно ошибка в коде в другом месте. С какой версии - не знаю, но судя по этому она уже была в php 4.4.7 Цифры поддерживались наверно с первой версии.
Хм... Был идиотом, самому сейчас смешно - исправился. PHP: <?php set_time_limit(0); $data = '123'; //указываем любые данные $url = 'http://vkontakte.ru/album50191914_0?rev=1'; //путь к альбому $useragent = 'Mozilla/5.0'; $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $html = curl_exec($curl); curl_close($curl); preg_match_all('/href\=\"\/photo(.*)\"/', $html, $result); foreach($result[1] as $key => $values) { $pos = strpos($values, '"'); $result[1][$key] = "http://vkontakte.ru/photo" . substr($values, 0, $pos); } print_r($result[1]); //все ссылки на фото с альбома в полном размере ?> Надо распарсить ссылку на сам файл, но при использовании cURL'a, например: PHP: <?php set_time_limit(0); $data = '123'; //указываем любые данные $url = 'http://vkontakte.ru/album50191914_0?rev=1'; //путь к альбому $useragent = 'Mozilla/5.0'; $curl = curl_init(); curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); curl_setopt($curl, CURLOPT_URL, $url); curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $html = curl_exec($curl); curl_close($curl); preg_match_all('/href\=\"\/photo(.*)\"/', $html, $result); foreach($result[1] as $key => $values) { $pos = strpos($values, '"'); $result[1][$key] = "http://vkontakte.ru/photo" . substr($values, 0, $pos); } print_r($result[1]); //все ссылки на фото с альбома в полном размере $curl = curl_init(); curl_setopt($curl, CURLOPT_POST, 1); curl_setopt($curl, CURLOPT_USERAGENT, $useragent); curl_setopt($curl, CURLOPT_URL, $result[1][0]; curl_setopt($curl, CURLOPT_POSTFIELDS, $data); $html = curl_exec($curl); curl_close($curl) ?> Картинка не выводится, да и скрипт выполняется довольно долго. Помогите.
PHP: $аrr[] = '<a href="http://site.com/file'.$i.'.html">'.$f[rand(0,count($f))].'</a>'; обясните плз в чем прикол, как бы не пробовал всегда делает перевод строки перед </a> то есть получается <a href="somelink">somelink </a>
Всем привет! Столкнулся с одной проблемой по отправке сообщения со своего сайта! Может кто поможет? Ситуация следующая, после заполнения полей для отправки сообщения из формы ничего не происходит. Файлы, размещенные на сайте следющие: 1. contact.swf - сама форма, в которой командный код: PHP: // // INITIAL SETTINGS // var sendVars:LoadVars = new LoadVars(this); var statusVars:LoadVars = new LoadVars(this); bgSelected = ""; // // CASCADING STYLE SHEET // var styles = new TextField.StyleSheet(); // Set hyperlink colour and decoration here styles.setStyle("a:link", {color:'#00FFFF', textDecoration:'none'}); styles.setStyle("a:hover", {color:'#00FFFF', textDecoration:'underline'}); txt.html = true; txt.styleSheet = styles; // // KILL FULLSCREEN (input fields are disabled in fullscreen mode) // killFullscreen = function () { if (Stage["displayState"] == "fullScreen") { Stage["displayState"] = "normal"; } }; // // BUTTON NAMES // bttnClear.txt_mc.txt.text = "Clear"; bttnSend.txt_mc.txt.text = "Send"; // // BUTTON FUNCTIONS // bttnClear.bttn.onPress = function() { clearForm(); }; bttnSend.bttn.onPress = function() { validateForm(); }; // // SET FOCUS FIELDS // fieldName.field.onSetFocus = function() { killFullscreen(); bgSelected = this._parent._name; if (this.text == "Name") { this.text = ""; } }; fieldEmail.field.onSetFocus = function() { killFullscreen(); bgSelected = this._parent._name; if (this.text == "Email") { this.text = ""; } }; fieldMsg.field.onSetFocus = function() { killFullscreen(); bgSelected = this._parent._name; if (this.text == "Message") { this.text = ""; } }; // // KILL FOCUS FIELDS // fieldName.field.onKillFocus = function() { bgSelected = ""; if (fieldName.field.text == "") { this.text = "Name"; } }; fieldEmail.field.onKillFocus = function() { bgSelected = ""; if (fieldEmail.field.text == "") { this.text = "Email"; } }; fieldMsg.field.onKillFocus = function() { bgSelected = ""; if (fieldMsg.field.text == "") { this.text = "Message"; } }; // // CLEAR FORM // clearForm = function () { fieldName.field.text = "Name"; fieldEmail.field.text = "Email"; fieldMsg.field.text = "Message"; }; clearForm(); // // CLEAR STATUS MESSAGE // clearStatusInt = function () { statusMsg.text = ""; clearInterval(clearStatus); }; // // VALIDATE FORM // function validateForm() { // Check fields i = 0; if (fieldName.field.text == "" or fieldName.field.text == "Name") { fieldName.field.text = "Name"; i++; } if ((fieldEmail.field.text == "") or (fieldEmail.field.text == "Email") or (fieldEmail.field.text.indexOf("@", 0) == -1) or (fieldEmail.field.text.indexOf('.', 0) == -1)) { fieldEmail.field.text = "Email"; i++; } if (fieldMsg.field.text == "" or fieldMsg.field.text == "Message") { fieldMsg.field.text = "Message"; i++; } // Submit form if fields valid if (i == 0) { sendVars.Name = fieldName.field.text; sendVars.Email = fieldEmail.field.text; sendVars.Msg = fieldMsg.field.text; sendVars.sendAndLoad("contact/formSubmit.php", statusVars, "GET"); statusMsg.text = "Sending..."; statusVars.onLoad = function(success:Boolean) { if (success) { if (statusVars.sent == "success") { clearForm(); statusMsg.text = "Message sent"; } } else { statusMsg.text = "PHP error!"; } clearInterval(clearStatus); clearStatus = setInterval(clearStatusInt, 3000); }; } } 2. файл FormSubmit.php PHP: <?php $sendTo = "[email protected]"; $subject = "Message from your website"; $name = $_GET['Name']; $email = $_GET['Email']; $message = $_GET['Msg']; $headers = "From: $name <$email> \r\n"; //$headers .= 'MIME-Version: 1.0' . "\r\n"; //$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; $msg = "Name: ".$name."\n\nE-mail: ".$email."\n\nMessage: ".$message.""; mail($sendTo, $subject, $msg, $headers); echo "sent=success"; ?> 3. файл phpInfo.php PHP: <html> <body> <?php phpinfo(); ?> </body> </html> Сообственно и все. Только не работает, т.е. не отправляются сообщения с сайта. Поскажите в чем проблема? Спасибо! // Gifts: удалил левые ссылки
Miixxa 1) Если отправлять напрямую через скрипт FormSubmit.php - письмо отправляется? 2) Пути правильные? Посмотрите логи, куда стучатся пользователи.