ANTICHAT Forum
HOME FORUMS MEMBERS RECENT POSTS LOG IN  
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > PHP
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #2191  
Старый 06.03.2008, 17:50
ZET36
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
С нами: 9785147

Репутация: 137
По умолчанию

Вот решил написать скрипт который загружает фалы из интернэта к себе на фтп но почемуто файлы получаются битые .обьясните пожайлуста.

PHP код:
<?php   
$hostname 
= "imgl.yandex.net";  
  
$path = "/i/www/logo.png";  
  
$otvet = "";  
 
  
$fp = fsockopen($hostname, 80, $errno, $errstr, 30);   
   
  
     
    
$data = "\r\n\r\n";  
     
    
$headers = "POST $path HTTP/1.1\r\n";   
    
$headers .= "Host: $hostname\r\n";   
    
$headers .= "Content-type: application/x-www-form-urlencoded\r\n";  
    
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n";  
     
    
fwrite($fp, $headers.$data);   

    while (!
feof($fp))  
    {   
      
$otvet .= fgets($fp, 1024); 
       
    }   
    
fclose($fp);   
    
$massiv_otveta=explode("\n",$otvet); 

$nachalo_ishodnica = array_search('', $massiv_otveta)-3;
$konec_ishodnica = count($massiv_otveta);



$filename = 'negri.png';
$handle = fopen($filename, 'x');


for (
$i=$nachalo_ishodnica;$i<=$konec_ishodnica;$i++) {
fwrite($handle, $massiv_otveta[$i]);
}

fclose($handle);

?>

Последний раз редактировалось ZET36; 06.03.2008 в 18:04..
 
Ответить с цитированием

  #2192  
Старый 06.03.2008, 17:54
Isis
Флудер
Регистрация: 20.11.2006
Сообщений: 3,315
С нами: 10248806

Репутация: 2371


По умолчанию

ZET36,
PHP код:
<?php
$data 
= "\r\n\r\n";
$headers .= "Content-Length: ".strlen($data)."\r\n\r\n"; 
?>
Может в $data должно быть пусто? =\
 
Ответить с цитированием

  #2193  
Старый 06.03.2008, 18:07
ZET36
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
С нами: 9785147

Репутация: 137
По умолчанию

Isis хых непомогает, блин я конкретно ступил со скриптом всё можно сделать проще. но всёравно файл битый

PHP код:
<?php
$inetfile 
= fopen("http://imgl.yandex.net/i/www/logo.png", "r");
$copyfyle = fopen("logo.png", 'x');

while (!
feof($inetfile)) {
    
$file = fgets($inetfile, 4096);

fwrite($copyfyle, $file);
fclose($copyfyle);   
}
fclose($inetfile);
?>
мне кажется это происходит из за режимов для fopen()
(x) а какие есть ещё режимы для записи файлов?

Последний раз редактировалось ZET36; 06.03.2008 в 18:30..
 
Ответить с цитированием

  #2194  
Старый 06.03.2008, 18:19
NOmeR1
Познавший АНТИЧАТ
Регистрация: 02.06.2006
Сообщений: 1,187
С нами: 10495046

Репутация: 2642


По умолчанию

$data - это строка с запросом (var1=...&var2=...)

Вот исправления.

Строка 10 (на твоё усмотрение)
PHP код:
$data = "var1=...&var2=..."; 
Строка 17
PHP код:
fwrite($fp, $headers); 
Твой код можно упростить во много раз, если воспользоваться file_get_contents(), т.к. у тебя там использоваться должен метод не POST, а GET.

PHP код:
<?php
    
// {
    
$file_to_download = 'http://imgl.yandex.net/i/www/logo.png';
    
$filename = 'negri.png';
    
// }
    
$f_got = file_get_contents($file_to_download);
    
$fopen = fopen($filename, 'w');
    
fwrite($fopen, $f_got);
    
fclose($fopen);
?>
P.S. Права на файл negri.png или папку со скриптом должны быть 0777.

Последний раз редактировалось NOmeR1; 06.03.2008 в 18:23..
 
Ответить с цитированием

  #2195  
Старый 06.03.2008, 18:35
ZET36
Участник форума
Регистрация: 08.10.2007
Сообщений: 259
С нами: 9785147

Репутация: 137
По умолчанию

NOmeR1 огромное спасибо. всё работает
 
Ответить с цитированием

  #2196  
Старый 07.03.2008, 00:55
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
С нами: 10262314

Репутация: 668


По умолчанию

Помогите плз я написал скрипт...у меня он работает.. а у чела которому он нужен не пашет вот скрипт

функция mysql_qw()

PHP код:
<?php ## Простейшая функция для работы с placeholder-ами.

// result-set mysql_qw($connection_id, $query, $arg1, $arg2, ...)
//  - или -
// result-set mysql_qw($query, $arg1, $arg2, ...)
// Функция выполняет запрос к MySQL через соединение, заданное как
// $connection_id (если не указано, то через последнее открытое).
// Параметр $query может содержать подстановочные знаки ?,
// вместо которых будут подставлены соответствующие значения
// аргументов $arg1, $arg2 и т.д. (по порядку), экранированные и
// заключенные в апострофы.
function mysql_qw()
{
    
// Получаем все аргументы функции.
    
$args = func_get_args();
    
// Если первый параметр имеет тип "ресурс", то это ID соединения.
    
$conn = null;
    if (
is_resource($args[0]))
        
$conn = array_shift($args);
    
// Формируем запрос по шаблону.
    
$query = call_user_func_array("mysql_make_qw", $args);
    
// Вызываем SQL-функцию.
    
return $conn !== null ? mysql_query($query, $conn) : mysql_query($query);
}

// string mysql_make_qw($query, $arg1, $arg2, ...)
// Данная функция формирует SQL-запрос по шаблону $query,
// содержащему placeholder-ы.
function mysql_make_qw()
{
    
$args = func_get_args();
    
// Получаем в $tmpl ССЫЛКУ на шаблон запроса.
    
$tmpl = &$args[0];
    
$tmpl = str_replace("%", "%%", $tmpl);
    
$tmpl = str_replace("?", "%s", $tmpl);
    
// После этого $args[0] также окажется измененным.
    // Теперь экранируем все аргументы, кроме первого.
    
foreach ($args as $i => $v)
    {
        if (!
$i)
            continue; 
// это шаблон
        
if (is_int($v))
            continue; 
// целые числа не нужно экранировать
        
$args[$i] = "'" . mysql_escape_string($v) . "'";
    }
    
// На всякий случай запорняем 20 последних аргументов недопустимыми
    // значениями, чтобы в случае, если число "?" превышает количество
    // параметров, выдавалась ошибка SQL-запроса (поможет при отладке).
    
for ($i = $c = count($args) - 1; $i < $c + 20; $i++)
        
$args[$i + 1] = "UNKNOWN_PLACEHOLDER_$i";
    
// Формируем SQL-запрос.
    
return call_user_func_array("sprintf", $args);
}
?>
Часть кода которая не работает:

PHP код:
$result = mysql_qw('SELECT * FROM items WHERE owner_id=? AND item_id=?', $char_id,4037) or die(mysql_error());
for (
$red = array(); $row2 = mysql_fetch_array($result); $red[] = $row2);
if (
$red == array())
{
$result = mysql_qw('SELECT MAX(object_id)+1 AS id FROM items');
$row = mysql_fetch_assoc($result);
$ins_id = $row['id'];
mysql_qw('INSERT INTO items SET owner_id=?, object_id=?, item_id=?, count=?', $char_id, $ins_id, 4037, $FAs_for_vote) or die(mysql_error());
} else {
mysql_qw('UPDATE items SET count=count+? WHERE owner_id=? AND item_id =?', $FAs_for_vote,
$char_id, 4037) or die(mysql_error());} 
эта часть скрипта проверяет есть чи у чара этот предмет если да то добовляет +1 к количеству а если нет то просто создаёт его у чара....
но проблема в том что скрипт работает у меня нормально а у другова он просто создаёт всегда этот предмет заного даже если он существовал

Последний раз редактировалось Doom123; 07.03.2008 в 01:02..
 
Ответить с цитированием

  #2197  
Старый 07.03.2008, 01:00
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
С нами: 10269701

Репутация: 58
По умолчанию

а у вас БД одинаковые?
 
Ответить с цитированием

  #2198  
Старый 07.03.2008, 01:03
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
С нами: 10262314

Репутация: 668


По умолчанию

у меня mysql 5.0 у него 5.1
 
Ответить с цитированием

  #2199  
Старый 07.03.2008, 01:07
RedBull@12
Участник форума
Регистрация: 06.11.2006
Сообщений: 129
С нами: 10269701

Репутация: 58
По умолчанию

а у вас БД одинаковые?
скорее всего у тебя БД более старой версии, а парнишки более новая версия.
если так то может и БД ругаться на запросы, елси мускул, то в новых версиях обязательны кавычки, как
PHP код:
SELECT * FROM `test` WHERE id="1" 
 
Ответить с цитированием

  #2200  
Старый 07.03.2008, 01:14
Doom123
Постоянный
Регистрация: 11.11.2006
Сообщений: 834
С нами: 10262314

Репутация: 668


По умолчанию

я пытался и с помощью ковычек исправить не вышло( да и темболее там соит
or die(mysql_error()) что вывело бы ошибку в синтаксисе
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[c/c++] Новичкам: задаем вопросы _Great_ С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby 5421 21.04.2026 07:37
Интернетчики задали российскому президенту очень странные вопросы podkashey Мировые новости. Обсуждения. 4 07.07.2006 16:53
Вопросы по Ipb 2.0 Voodoo_People Уязвимости CMS / форумов 26 15.02.2005 22:57



Здесь присутствуют: 2 (пользователей: 0 , гостей: 2)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.