Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Помогите разобраться HTTP/1.0 400 Bad Request
 
 автор: Arctic   (01.02.2007 в 21:25)   письмо автору
 
 

sostav.php

<table width=100% bordercolor=#EDB958 cellspacing=1 cellpadding=2 border=1>
<tr bgcolor=#EDB958>
<td width="15" align=center>
<b>№</b></td><td align=center>
<b>Имя</b></td><td width=250 align=center>
<b>Звание</b></td><td align=center>
<b>Город</b></td><td align=center>
<b>Комната</b></td><td align=center>
<b>Он-лайн</b></td>
</tr>
<?php
  $usr
['login'][1] = "Первый%20маг";
  
$usr['zvan'][1]  = "Глава клана";

    
$usr['login'][2] = "Legolasiman";
  
$usr['zvan'][2]  = "Глава клана";
                           
?>
       <?php
  
// Другие пользователи

  
for($i 1$i <= count($usr['login']); $i++)
  {
    
$login  $usr['login'][$i];
    
$nomer  $i;
    
$zvan   $usr['zvan'][$i];

    
$rlogin urlencode($login);

    include(
"inc/inc.php");
    include(
"inc/index1.php");
  }

?>

inc.php

<?php
$znak 
='<img src="http://img.combats.ru/i/align1.gif" border="0" height="15" width="12"><img src="http://bkdevil.ho.com.ua/cutenews/data/upimages/24x15_2.gif" border="0" height="15" width="24">';
$inf '<a href="http://capitalcity.combats.ru/inf.pl?login='.$login.'" target="_blank"><img src="http://capitalcity.combats.ru/i/inf.gif" title=" Информация об игроке" alt="" border="0" height="11" width="12"></a>';
$lines file("http://capitalcity.combats.ru/inf.pl?login=".$login."&short=1");
foreach(
$lines as $value)
{
   list(
$var$val) = split("\=",$value);
   
$arr['some_key'] = 'some value';
   
$arr[$var] = $val;
}
?>

index1.php

<tr bgcolor=#EDB958>
<td width="15" align=center><b>
<?php echo ($nomer); ?>
</b></td>
<td align=center><b>
<?php echo ($znak); echo ($login); ?>
<?php echo "<font face=verdana>".$arr['level']."</font>";
?>]<?php echo ($inf); ?>
</b></td>
<td width=250 align=center><b>
<?php echo ($zvan); ?>
</b></td>
<td align=center><b>
<?php
echo "<font face=verdana>".$arr['gamecity']."</font>";
?>
<td align=center><b>
<?php
echo "<font face=verdana>".$arr['room_name']."</font>";
?>
</b></td>
<td align=center><b>
<?php
if ($arr['login_online']==1)echo ("<font color=#008000>Он-лайн</font>");
else echo (
"<font color=red>Оф-лайн</font>");
?></b></td>
</tr>

Он берет инфу к примеру с http://angelscity.combats.ru/inf.pl?login=Первый%20маг&short=1 и в зависимости от значения выводит на страницу. Так вот проблема в чем, когда в

    $usr['login'][2] = " ";
  $usr['zvan'][2]  = " ";

стоит логин без пробела то все нормально выводит, а если в нике есть пробел то выдает вот такую ошибку

Warning: file(): HTTP request failed! HTTP/1.0 400 Bad Request in c:\appserv\www\devil\inc\inc.php on line 4

Warning: file(http://capitalcity.combats.ru/inf.pl?login=Первый%20маг&short=1): failed to open stream: No error in c:\appserv\www\devil\inc\inc.php on line 4

Warning: Invalid argument supplied for foreach() in c:\appserv\www\devil\inc\inc.php on line 5

И еще вводишь несколько значений к примеру

  $usr['login'][1] = "Acnerd";
  $usr['zvan'][1]  = "Глава клана";

    $usr['login'][2] = "Legolasiman";
  $usr['zvan'][2]  = "Глава клана";
                           ?>

То если первый он-лайн то и остальных выводит что он-лайн. Короче как то что бы информация массива не повторялась, а менялась. Если как то не прально обьяснил...звиняйте я тока учусь

   
 
 автор: Arctic   (01.02.2007 в 21:57)   письмо автору
 
   для: Arctic   (01.02.2007 в 21:25)
 

Желаемый результат можно увидить http://nutras.ru/sostav.php

   
 
 автор: cheops   (02.02.2007 в 00:53)   письмо автору
 
   для: Arctic   (01.02.2007 в 21:25)
 

В URL не допустимы не только пробелы, но и русские символы, поэтому лучше оставлять ник как есть
<?php
$usr
['login'][1] = "Первый маг";
?>

но перед помещением в URL прогнать $login через функцию urlencode(), которая переведёт ник в безопасную форму.

   
 
 автор: Arctic   (02.02.2007 в 18:42)   письмо автору
 
   для: cheops   (02.02.2007 в 00:53)
 

А поподробнее об этом можно?

   
 
 автор: cheops   (03.02.2007 в 03:42)   письмо автору
 
   для: Arctic   (02.02.2007 в 18:42)
 

Вместо
<?php
$inf 
'...inf.pl?login='.$login.'" target=...';
?>

пиште так
<?php
$inf 
'...inf.pl?login='.urlencode($login).'" target=...';
?>

   
 
 автор: Arctic   (03.02.2007 в 10:47)   письмо автору
 
   для: cheops   (03.02.2007 в 03:42)
 

Warning: file(http://capitalcity.combats.ru/inf.pl?login=Первый маг&short=1): failed to open stream: HTTP request failed! HTTP/1.0 400 Bad Request in c:\appserv\www\devil\inc\inc.php on line 4

Warning: Invalid argument supplied for foreach() in c:\appserv\www\devil\inc\inc.php on line 5 


Все равно такая же ошибка

   
 
 автор: cheops   (03.02.2007 в 11:35)   письмо автору
 
   для: Arctic   (03.02.2007 в 10:47)
 

Это относится ко всем URL, т.е. в функции file тоже следует пропустить значение $login через urlencode()
<?php
  $lines 
file("http://capitalcity.combats.ru/inf.pl?login=".urlencode($login)."&short=1");
?>

   
 
 автор: Arctic   (03.02.2007 в 11:43)   письмо автору
 
   для: cheops   (03.02.2007 в 11:35)
 

теперь еще вот такую ошибку

Warning: file(): HTTP request failed! HTTP/1.0 400 Bad Request in c:\appserv\www\devil\inc\inc.php on line 4

Warning: file(http://capitalcity.combats.ru/inf.pl?login=%CF%E5%F0%E2%FB%E9+%EC%E0%E3&short=1): failed to open stream: No error in c:\appserv\www\devil\inc\inc.php on line 4

Warning: Invalid argument supplied for foreach() in c:\appserv\www\devil\inc\inc.php on line 5

   
 
 автор: cheops   (03.02.2007 в 12:31)   письмо автору
 
   для: Arctic   (03.02.2007 в 11:43)
 

А тестирование скрипта где происходит на локальной машине или на сервере?

PS Вместо urlencode() попробуйте использовать функцию rawurlencode().

   
 
 автор: Arctic   (03.02.2007 в 12:53)   письмо автору
 
   для: cheops   (03.02.2007 в 12:31)
 

на локальной ошибки, когда на сервер заливаешь не считывает информацию http://bkdevil.ho.com.ua/sostav.php

   
 
 автор: Arctic   (04.02.2007 в 23:30)   письмо автору
 
   для: Arctic   (03.02.2007 в 12:53)
 

Скрипт работает но осталась проблема. Короче как то что бы информация массива не повторялась, а менялась. А то какое значение на 1 такое значение и выставляет на остальных.
Где то слышал
скрипт состав клана, на большинстве клановых сайтов состоит из 2 частей.
1 часть регулярно запускается планировщиком(у нас раз в полчаса кажется)
эта часть собирает информацию и кладет в базу
2 часть отображает..

Может кто сможет написать такой скрипт? Или поделиться мыслями хотябы

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования