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

Форум PHP

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

 

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

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

тема: Что ознаает эта ошибка Notice: Undefined offset: от 0 до 8 in
 
 автор: chexov   (17.03.2008 в 12:50)   письмо автору
 
 

Итак есть игра крестики - нолики
файл index.php

<?
if (empty($mode))
  {
  
$mode='k0';
  }
switch (
$mode)
{
case 
"k0":

include (
"1.php");

global 
$b;
global 
$gwin;
global 
$gover;
$cdiff 'Normal';
if (isset(
$_GET['new']))
  {
  unset(
$b);
  unset(
$turn);
  
$_SESSION['play']=12345;
  }
if (!isset(
$turn)) 
  {
  
$turn=1;
  }
if(!empty(
$h))
  {
  
$h=base64_decode($h);
  
$b=explode(".",$h);
  }
echo 
"<table columns='3' align='LL'>";

if (isset(
$_GET['mv']))
$b[$_GET['mv']]='x';
checkwin();
checkfull();
if (
$gover <> && $gwin == '' && $b <> '')
  {
  
$what=rand(1,2);
  if(
$what==1)
    {
    
compmove();
    if (
$cmv == '')
      {
      
comprand();
      }
    }
  else
    {
    
compmove();
    if (
$cmv == '')
      {
      if (
$b[4] == '')
      
$cmv=4;
      elseif (
$b[0] == '')
      
$cmv=0;
      elseif (
$b[2] == '')
      
$cmv=2;
      elseif (
$b[6] == '')
      
$cmv=6;
      elseif (
$b[8] == '')
      
$cmv=8;
      if (
$cmv == '')
      
comprand();
      }
    }
    
$b[$cmv] = 'o';
  }
  
checkwin();
  
checkfull();
  for (
$i 0$i <= 8$i++)
    {
    if (
$i == || $i == || $i == 6)
    echo 
"<tr>";
    echo 
"<td>";
    if (
$b[$i] == 'x')
    echo 
"X";
    elseif (
$b[$i] == 'o')
    echo 
"0";
    elseif (
$gwin == '')
      {
      echo 
"<a href='?mv=$i&amp;h=".base64_encode("$b[0].$b[1].$b[2].$b[3].$b[4].$b[5].$b[6].$b[7].$b[8]")."&amp;mode=k0'>".$i."</a>";
      }
    echo 
"</td>";
    if (
$i == || $i == || $i == 8)
    echo 
"</tr>";
  }
  echo 
"</table>";
  if (
$gwin == 'X')
    {
    if(!empty(
$_SESSION['play']))
      {
      echo 
"Ты выиграл 10$$<br/>";
      unset(
$_SESSION['play']);
      }
    }
  elseif (
$gwin == 'O')
    {
    
$h='';
    if(!empty(
$_SESSION['play']))
      {
      echo 
"Ты проиграл 10 $$<br/>";
      unset(
$_SESSION['play']);
      }
    }
  elseif (
$gover == '1')
    {
    echo 
"Ничья<br/>";
    }
  echo 
$siz1."<a href='?mode=k0&amp;new=1'>новая игра</a><br/>";
  break;
}
?>

и файл 1.php

<?
function checkfull()
{
global 
$b;
global 
$gover;

$gover 1;
for (
$ii 0$ii <= 8$ii++)
{
if (
$b[$ii] == '')
{
$gover 0;
return;
}
}
}
function 
checkwin()
{
global 
$b;
global 
$gwin;
$c=1;
while (
$c <= 2)
{
if (
$c == 1)
$t='o';
else
$t='x';
if (
(
$b[0] == $t && $b[1] == $t && $b[2] == $t) || ($b[3] == $t && $b[4] == $t && $b[5] == $t) || ($b[6] == $t && $b[7] == $t && $b[8] == $t) || ($b[0] == $t && $b[3] == $t && $b[6] == $t) || ($b[1] == $t && $b[4] == $t && $b[7] == $t) || ($b[2] == $t && $b[5] == $t && $b[8] == $t) || ($b[0] == $t && $b[4] == $t && $b[8] == $t) || ($b[2] == $t && $b[4] == $t && $b[6] == $t))
{
$gwin strtoupper($t);
return;
}
$c++;
}
}

function 
compmove()
{
global 
$cmv;
global 
$b;
for (
$c 0$c <=1$c++)
{
if (
$c == 0)
$t='o';
else
$t='x';

if (
$b[0] == $t && $b[1] == $t && $b[2] == '')
$cmv 2;
  if (
$b[0] == $t && $b[1] == '' && $b[2] == $t)
$cmv 1;
if (
$b[0] == '' && $b[1] == $t && $b[2] == $t)
$cmv 0;
if (
$b[3] == $t && $b[4] == $t && $b[5] == '')
$cmv 5;
if (
$b[3] == $t && $b[4] == '' && $b[5] == $t)
$cmv 4;
if (
$b[3] == '' && $b[4] == $t && $b[5] == $t)
$cmv 3;

if (
$b[6] == $t && $b[7] == $t && $b[8] == '')
$cmv 8;
if (
$b[6] == $t && $b[7] == '' && $b[8] == $t)
$cmv 7;
if (
$b[6] == '' && $b[7] == $t && $b[8] == $t)
$cmv 6;

if (
$b[0] == $t && $b[3] == $t && $b[6] == '')
$cmv 6;
if (
$b[0] == $t && $b[3] == '' && $b[6] == $t)
$cmv 3;
if (
$b[0] == '' && $b[3] == $t && $b[6] == $t)
$cmv 0;

if (
$b[1] == $t && $b[4] == $t && $b[7] == '')
$cmv 7;
if (
$b[1] == $t && $b[4] == '' && $b[7] == $t)
$cmv 4;
if (
$b[1] == '' && $b[4] == $t && $b[7] == $t)
$cmv 1;
if (
$b[2] == $t && $b[5] == $t && $b[8] == '')
$cmv 8;
if (
$b[2] == $t && $b[5] == '' && $b[8] == $t)
$cmv 5;
if (
$b[2] == '' && $b[5] == $t && $b[8] == $t)
$cmv 2;


if (
$b[0] == $t && $b[4] == $t && $b[8] == '')
$cmv 8;
if (
$b[0] == $t && $b[4] == '' && $b[8] == $t)
$cmv 4;
if (
$b[0] == '' && $b[4] == $t && $b[8] == $t)
$cmv 0;

if (
$b[2] == $t && $b[4] == $t && $b[6] == '')
$cmv 6;
if (
$b[2] == $t && $b[4] == '' && $b[6] == $t)
$cmv 4;
if (
$b[2] == '' && $b[4] == $t && $b[6] == $t)
$cmv 2;
if (
$cmv <> '')
break;
}
}
function 
comprand()
{
global 
$b;
global 
$cmv;
srand ((double) microtime() * 1000000);
while (! isset(
$cmv))
{
$test=rand(08);
if (
$b[$test] == '')
$cmv=$test;
}
}
?>

так вот при нажатии на любую цифру, выскакивает такого рода ошибка
Notice: Undefined offset: от 0 до 8 in /.....

подскажите что не так?

   
 
 автор: chexov   (17.03.2008 в 14:55)   письмо автору
 
   для: chexov   (17.03.2008 в 12:50)
 

ну кто нибудь...

   
 
 автор: Antohins   (17.03.2008 в 14:59)   письмо автору
 
   для: chexov   (17.03.2008 в 14:55)
 

полный текст ошибки в студию.

   
 
 автор: chexov   (17.03.2008 в 15:06)   письмо автору
 
   для: Antohins   (17.03.2008 в 14:59)
 

вообще там 81 строка одного вида
Notice: Undefined offset: 0 in /home/index.php on line 30

меняется только строка (online) и значение после Offset:

   
 
 автор: Antohins   (17.03.2008 в 15:01)   письмо автору
 
   для: chexov   (17.03.2008 в 14:55)
 

и вообще это не ошибка, а предупреждение.. ничего серьезного короч. может переменная не задана.

для каждой получаемой переменной сделай условие if(isset$var)) и думаю норм все буит

   
 
 автор: chexov   (17.03.2008 в 15:02)   письмо автору
 
   для: Antohins   (17.03.2008 в 15:01)
 

я убираю сообщения об ошибках(предупреждениях) скрипт не выполняется нужным образом, задействованы всего 2 цифры из 9 (а не все по порядку)

   
 
 автор: Antohins   (17.03.2008 в 15:20)   письмо автору
 
   для: chexov   (17.03.2008 в 15:02)
 

не вникал в код.

попробуйте не просто $h а $_GET['h']

   
 
 автор: Antohins   (17.03.2008 в 15:21)   письмо автору
 
   для: Antohins   (17.03.2008 в 15:20)
 

если я правильно понял, что переменная $h формируется на 82 строчке.

   
 
 автор: chexov   (17.03.2008 в 15:30)   письмо автору
 
   для: Antohins   (17.03.2008 в 15:20)
 

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

   
 
 автор: Antohins   (17.03.2008 в 15:41)   письмо автору
 
   для: chexov   (17.03.2008 в 15:30)
 

у меня на денвере все норм работает )

   
 
 автор: chexov   (17.03.2008 в 15:50)   письмо автору
 
   для: Antohins   (17.03.2008 в 15:41)
 

да я знаю что на локале все ок, на хосте капризничает

   
 
 автор: sim5   (17.03.2008 в 15:52)   письмо автору
 
   для: chexov   (17.03.2008 в 12:50)
 

А где же у вас сама сессия стартуется? Работаете с ней, а старта ее не видно.

   
 
 автор: Antohins   (17.03.2008 в 16:01)   письмо автору
 
   для: sim5   (17.03.2008 в 15:52)
 

Интересно, а почему на денвере тогда работает?

   
 
 автор: chexov   (17.03.2008 в 16:17)   письмо автору
 
   для: sim5   (17.03.2008 в 15:52)
 

какая сессия? вы видите сессии? там бэйс код 64 используется

   
 
 автор: chexov   (17.03.2008 в 16:30)   письмо автору
 
   для: chexov   (17.03.2008 в 16:17)
 

все ,я нашел причину, прописал всем передающимся переменным $_GET

   
 
 автор: Antohins   (17.03.2008 в 16:42)   письмо автору
 
   для: chexov   (17.03.2008 в 16:30)
 

вот именно. в денвере без $_ГЕТ прокатит, но не на норм серверах

   
 
 автор: sim5   (17.03.2008 в 17:11)   письмо автору
 
   для: chexov   (17.03.2008 в 16:17)
 

>какая сессия? вы видите сессии?

$_SESSION['play']=12345; - а это что?

   
 
 автор: Wunderbar   (17.03.2008 в 17:28)
 
   для: sim5   (17.03.2008 в 17:11)
 

>$_SESSION['play']=12345; - а это что?
Это человек из чужого скрипта забыл убрать лишнее.

   
 
 автор: sim5   (17.03.2008 в 18:22)   письмо автору
 
   для: Wunderbar   (17.03.2008 в 17:28)
 

Похоже, а потом удивляемся. :)

   
Rambler's Top100
вверх

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