|
|
|
| В онлайн игре после того как в форме пиши число и жму играть, появляется страница с четырьмя такими ошибками и написанно вы не ввели ставку, ошибка на 79, 79, 81, 81 строки,else и if($session['con']==0) помогите исправить ошибки. Кстати если убрать одно равно то ошибки изчезают но игра уже без ставок. | |
|
|
|
|
|
|
|
для: Санька
(03.11.2007 в 18:38)
| | Во-первых установите в php.ini register_globals = off, и обращайтесь к сессии как суперглобальному массиву $_SESSION['con']. Это же касается и $_GET и $_POST.
Во-вторых приведите сообщеия об ошибках. | |
|
|
|
|
|
|
|
для: Санька
(03.11.2007 в 18:38)
| | $_SESSION | |
|
|
|
|
|
|
|
для: bronenos
(03.11.2007 в 18:55)
| | Название ошибок в название темы, я с wml переделывал в html в wml ведь все окей было. Пробывал я $_SESSION ставить еще больше ошибок 1,5 дня уже мучаюсь найти проблему в одном файле это офигеть можно, в первые такое. Мож файл скинуть? чувствую будет сложновато! | |
|
|
|
|
|
|
|
для: Санька
(03.11.2007 в 19:06)
| | Undefined variable: mn - Неопределена перемнная mn, к которой потом вы обращаетесь. То есть, если она у вас должна хранится в сессии, то она там не записана, либо пытаетесь записать несуществующую. $_SESSION и прочее - об этом читайте в темах касающихся безопасности. | |
|
|
|
|
|
|
|
для: sim5
(03.11.2007 в 19:23)
| | А причем тут безопасность, mn у меня есть. Я не чо и не делал только с wml на html переделал, а на wml все работало. | |
|
|
|
|
|
|
|
для: Санька
(04.11.2007 в 01:05)
| | Я не чо и не делал только с wml на html переделал,-так ты определись,делал ли ты что то ли не делал.Например в wml могут применяться переменные,в html-нет,и уже из за этого могут быть проблемы,хотя не видя кода,угадать конечно... | |
|
|
|
|
|
|
|
для: Санька
(04.11.2007 в 01:05)
| | Если бы у вас все было, вы бы не получали Undefined... Приведите часть своего кода от и до, по ошибки включительно. Прочитайте о register_globals. | |
|
|
|
|
|
|
|
для: sim5
(04.11.2007 в 06:30)
| | Сейчас проверил игру в wml, на первый взгляд работает стабильно ввожу ставку выдаются деньги и игра идет, но стоит только просто обновить страницу как сразу же появляются точно такие же ошибки. Инет с компа под рукой будет скину часть скрипта (вечером). | |
|
|
|
|
|
|
|
для: Санька
(04.11.2007 в 10:37)
| | Вот скрипт, разчитываю на вашу помощь. Заранее благодарен!!!
<?php
ini_set('session.use_cookies','0');
ini_set('session.use_trans_sid','0');
ini_set('url_rewriter.tags','');
session_name('stw');
include"../../tems/start.php";
header("Cache-Control: no-cache");
if(!session_is_registered("session"))
{
$session['round']=0;
$session['money']=100;
$session['con']=0;
$session['histuser']="";
session_register("session");
}
$ref=rand(100,99999);
$ses=SID;
$ses="$ses&$ref";
function cards_score($str)
{
if($str==1||$str==2||$str==3||$str==4){$num = 6;}
if($str==5||$str==6||$str==7||$str==8){$num = 7;}
if($str==9||$str==10||$str==11||$str==12){$num = 8;}
if($str==13||$str==14||$str==15||$str==16){$num = 9;}
if($str==17||$str==18||$str==19||$str==20){$num = 10;}
if($str==21||$str==22||$str==23||$str==24){$num = 2;}
if($str==25||$str==26||$str==27||$str==28){$num = 3;}
if($str==29||$str==30||$str==31||$str==32){$num = 4;}
if($str==33||$str==34||$str==35||$str==36){$num = 11;}
return $num;
}
if($session['round']==0)
{
$max = $session['money'];
if($max==0)
{
session_unregister("session");
echo 'У Вас на счету не осталось средств для продолжения текущей игры!<br/>
<a href="index.php">начать новую игру</a><br/>
или<br/><a href="../../index.php">выйти</a>';
exit;
}
echo "У Вас $max\$\$<br/>";
$ru = rand(1,36);
if($session['histuser']!=="")$ru=trim(str_replace("|","", $session['histuser']));
echo '<b>Ваши карты:</b><br/><img src="cards/'.$ru.'.gif" alt="" /><br/>';
$uscore=cards_score($ru);
$pstr = "очков";
if($uscore==2||$uscore==3||$uscore==4)$pstr = "очка";
echo ''.$uscore.' '.$pstr.'<br/>';
$maxlen=strlen($max);
echo 'Ваша ставка(1-'.$max.'):<br/>
<form action="index.php?'.$ses.'" method="post">
<input name="mn$ref" maxlength="'.$maxlen.'" /><br/>
<input type="submit" value="Играть">
</form>
<a href="faq.php?'.$ses.'">Правила игры</a><br/>
<a href="../../index.php">Выход</a><br/>';
$session['histuser']="|$ru";
$session['round']=1;
}
else
{
if($session['con']==0)
{
if($mn>$session['money']||$mn===""||!isset($mn)||$mn<1)
{
if($mn===""||$mn<1){echo 'Вы не указали ставку!';}
else {echo 'На Вашем счету недостаточно средств для подобной ставки!';}
include"../../tems/end.php";
$session['round']=0;
exit;
}
$session['con']=round($mn);
$session['money']=$session['money']-$session['con'];
}
$rate=$session['con']*2;
$histuser=split("\|",$session['histuser']);
if(!isset($end))
{
do
{
$randgen=1;
$ru = rand(1,36);
for($i=1;$i < count($histuser);$i++)
{
if($ru==$histuser[$i])
{
$randgen=0;
break;
}
}
}
while($randgen==0);
$session['histuser']=$session['histuser']."|$ru";
$countus = count($histuser);
$histuser[$countus] = $ru;
}
for($i=1;$i < count($histuser);$i++)
{
$ustemp=cards_score($histuser[$i]);
@$uscore=@$uscore+$ustemp;
}
$udoublet=0;
if((count($histuser)==3)&&($uscore==22))
{
$tone=0;
$ttwo=0;
if($histuser[1]==33||$histuser[1]==34||$histuser[1]==35||$histuser[1]==36)$tone=1;
if($histuser[2]==33||$histuser[2]==34||$histuser[2]==35||$histuser[2]==36)$ttwo=1;
if($tone==1&&$ttwo==1)$udoublet=1;
}
if($uscore>21&&$udoublet==0)$close=1;
if($udoublet==1||$uscore==21||$uscore==20)$end=1;
$max = $session['money'];
echo "У Вас $max\$\$<br/>\n";
if(isset($close))
echo '<b>перебор!</b><br/>';
$win=0;
if(isset($end))
{
$histbot[0]="";
$hist=$histuser;
for($i=1;$i < 10;$i++)
{
do
{
$randgen=1;
$rb = rand(1,36);
for($i=1;$i < count($hist);$i++)
{
if($rb==$hist[$i])
{
$randgen=0;
break;
}
}
}
while($randgen==0);
$histbot[]=$rb;
$hist[]=$rb;
$btemp=cards_score($rb);
@$bcore=@$bcore+$btemp;
if($bcore==20)break;
if($bcore==21)break;
if($bcore==$uscore)break;
if($bcore>$uscore)break;
if($bcore>21)break;
}
echo '<b>Банкир открылся:</b><br/>';
for($i=1;$i < count($histbot);$i++)
{
echo "<img src=\"cards/$histbot[$i].gif\" alt=\"cards\"/>";
}
$pstr = "очков";
if($bcore==2||$uscore==3||$bcore==4||$bcore==22||$bcore==23||$bcore==24)$pstr = "очка";
if($bcore==21)$pstr = "<b>очко!!!</b>";
echo '<br/>'.$bcore.' '.$pstr.'<br/>';
$bdoublet=0;
if((count($histbot)==3)&&($bcore==22))
{
$tone=0;
$ttwo=0;
if($histbot[1]==33||$histbot[1]==34||$histbot[1]==35||$histbot[1]==36)$tone=1;
if($histbot[2]==33||$histbot[2]==34||$histbot[2]==35||$histbot[2]==36)$ttwo=1;
if($tone==1&&$ttwo==1)$bdoublet=1;
}
if($bcore>21&&$bdoublet==0)$win=1;
if($bcore<$uscore)$win=1;
if($udoublet==1)$win=1;
if($bdoublet==1)$win=0;
if($uscore==21)$win=1;
if($bcore==21)$win=0;
$close=1;
}
echo '<b>Ваши карты:</b><br/>';
for($i=1;$i < count($histuser);$i++){echo "<img src=\"cards/$histuser[$i].gif\" alt=\"cards\"/>";}
$pstr = "очков";
if($uscore==2||$uscore==3||$uscore==4||$uscore==22||$uscore==23||$uscore==24)$pstr = "очка";
if($uscore==21)$pstr = "<b>очко!!!</b>";
echo '<br/>'.$uscore.' '.$pstr.'<br/>';
if(isset($close))
{
$session['round']=0;
$session['histuser']="";
if($win==0)
{
echo '<b>Вы проиграли</b><br/>';
$f=fopen("lost.dat","a+");
flock($f,LOCK_EX);
$data=file("lost.dat");
@$data[0]=trim($data[0])+1;
@$data[1]=trim($data[1])+$session['con'];
ftruncate($f,0);
fwrite($f,"$data[0]\n");
fwrite($f,"$data[1]\n");
flock($f,LOCK_UN);
fclose($f);
$session['con']=0;
}
else
{
echo '<b>Вы выиграли!</b><br/>';
$session['money']=$session['money']+$rate;
$f=fopen("win.dat","a+");
flock($f,LOCK_EX);
$data=file("win.dat");
@$data[0]=trim($data[0])+1;
@$data[1]=trim($data[1])+$session['con'];
ftruncate($f,0);
fwrite($f,"$data[0]\n");
fwrite($f,"$data[1]\n");
flock($f,LOCK_UN);
fclose($f);
$session['con']=0;
echo "Ваш выигрыш $rate\$\$<br/>\n";
}
echo '<a href="index.php?'.$ses.'">сыграть ещё</a><br/>';
}
else {echo "на кону $rate\$\$<br/><a href=\"index.php?$ses\">ещё</a><или><a href=\"index.php?$ses&end\">открыть</a><br/>\n";}
echo '<a href="../../index.php">Выход</a>';
}
include"../../tems/end.php";
?>
|
| |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 10:05)
| |
if($mn>$session['money']||$mn===""||!isset($mn)||$mn<1)
| и где она определена?
P.S.
<?
function cards_score($str)
{
if ($str>0 && $str<21) $num = ceil($str / 4) + 1;
else if ($str>20 && $str<33) $num = ceil($str / 4) - 4;
else if ($str>32 && $str<37) $num = 11;
return $num;
}
?>
|
| |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 10:05)
| | Ну если опустить вопросы о начале, то до этого места:
if($mn>$session['money']||$mn===""||!isset($mn)||$mn<1)
ничего неизвестно об $mn. Почему тогда вы удивляетесь предупреждению? | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 11:11)
| | Для этого я и поднял тему, что значит не чего не известно и что она хочет? Файлы с деньгами (имеющиеся на руках персонажа и банкира имеются) и в скрипте задействованы, я так понимаю в mn через форму я ввожу ставку, а дальше проверка идет сколько я ввел денег и есть ли у меня столько на счету. Объясните глупенькому плиз, я совсем запарился. Я тему новую сейчас создам, кое как гружусь. | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 11:48)
| | А что тут объяснять, если до этого написать, например, $mn = 0;, то и передупреждения такого вы более не получите.
PS. Вернее, вы сравниваете переменную, которой факически не существует, поэтому, нужно проверять это, и если она не определена, а ее значение не установлено, то определить ее и установить значение по умолчанию:
<?
$mn = isset(От куда берем значание) ? От куда берем значание : 0
|
| |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 11:50)
| | sim5 я поставил переменную $mn=0 ошибки ушли, но при вводе ставки пишет вы не ввили число, я так понял на эту тему написал bronenos. bronenos я пробывал (пытался) сделать как вы подсказали, но ошибки валят и так и сяк я видать не так вас понял (только не подумайте что я даун :) тяжело просто включится в таком скрипте (большие скрипты это жесть для меня) многово не понимаю, но учусь и все записываю, мотаю на ус. Вам я понимаю легко кого все (или большентво знаете) не ругайте сильно :) | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 12:42)
| | Ну скорее это у вас было предупреждение, вывод которого на экран можно подавить. Но если бы вы в дальнейшем стали бы делить что-то на это неопределенное, вот тогда бы точно была ошибка.
Еще раз (последний) говорю - не надейтесь на register_globals = on. Не обращайтесь к переменным массива как у вас $session['histuser'], а обращайтесь как $_SESSION['histuser'] и др. И выключите register_globals. Ну и не понятно, если вы работаете с сессией, а где же вы ее стартуете?
А в остальном не понятно, от куда вы получаете переменную $mn (чему приравниваете)? Если так, как вам указал bronenos, то это имя а не значение. Да и зачем такое имя, ведь заведомо оно не известно будет. Может у поля имя mn, а его значение равно $ref? Тогда с учетом register_globals = on будет похоже, но повторяю - это не есть гут. | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 13:28)
| | Регистер глобал отключил off, все $session['histuser'] переделал в $_SESSION['histuser'] теперь карты не появляются гг у меня уже шарики на ролики ошибка еще выскачила неопределенная переменная num | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 13:45)
| | Успокойтесь, не раскатяться ваши шарики.) А все потому, что если вы раньше обращались к этой переменной как $num, то теперь должны как $_GET['num'], если она у вас передается методом GET, ну или $_POST['num'], если POST соответственно. И так все пременные надо переписать! Не паникуйте, лучше сразу убрать потенциальные проблемы, чем мучиться потом! | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 13:53)
| | Переписал все num так $_GET['num'] карты появились. Появились новые ошибки неопределенная переменная $uscore, а с ней что делать? | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 14:35)
| | Проверять! Думаю это из той же оперы $_GET['uscore']... | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 14:42)
| | Эта переменная в форме отсутствует, видимо она из других мест | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 14:42)
| | Что то сдесь не ладное ставлю $_GET['uscore'] появляется ошибка на $ru, $ru переделываю появляется Undefined index: ru и все больше и больше ошибок мож откатить? У меня все работало без $_GET и $_SESSION | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 15:00)
| | внимательно пересмотрите весь скрипт и поясните для себя, что из формы, а что из кода | |
|
|
|
|
|
|
|
для: bronenos
(05.11.2007 в 15:01)
| | Не совсем понял о чем вы, имеется в виду вместо GET в POST переписать? | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 15:07)
| | =что из формы, а что в коде определено | |
|
|
|
|
|
|
|
для: bronenos
(05.11.2007 в 15:09)
| | В коде $uscore=cards_score($ru); я переписываю так $_GET['uscore']=cards_score($_GET['ru']);
bronenos я вас действительно не понимаю вы спрашиваете или просто говорите. Ставте хоть в конче точки или вопрос. | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 15:18)
| | Александр, не надо переписывать GET в POST. Зпомните следующее:
1. У вас есть, например, форма с методом передачи POST, в которой есть поле с именем pole. Также у вас есть ссылка с передачей переменной add.
2. При включенной register_globals вы могли обращаться к этому полю и переменной из ссылки так: $pole и $add.
3. При выключенной register_globals вы можете обращаться к этому полю и переменной из ссылки только так: $_POST["pole"] и $_GET["add"].
bronenos вам говорит - проверьте, от куда вы получаете ваши переменные, если они из форм или ссылок, то пропишите их соответственно. Если они у вас определяются в коде (может где-то раньше, в другом скрипте), то определите их, если получаете предупреждения или ошибки по ним.
Вы не задавайте сейчас лишних вопросов, а внимательно проверьте весь свой код, и желательно (очень) переписать его с учетом register_globals = off. | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 11:50)
| | Это полный скрипт только сессион старт в др. файле. | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 11:48)
| |
$ref=rand(100,99999);
...
<input name="mn$ref" maxlength="'.$maxlen.'" /><br/>
|
1. Не mn, а $_GET['mn']
2. Не $_GET['mn'], а $_GET['mn'.$ref]
Думаю, подсказка понятна | |
|
|
|
|
|
|
|
для: bronenos
(05.11.2007 в 11:51)
| | А ну так все правильно если mn=0 значит ставь не ставь число стаки не будет, а если напримет mn=1 одна монета на кону, а как же тогда самому ставку через форму ставить! | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 12:55)
| | Я вас не понял, но зачем рандомное число делать? | |
|
|
|
|
|
|
|
для: bronenos
(05.11.2007 в 13:15)
| | По выше прочитайте, может что упустили. sim5 сказал что мол переменная не определена, поставил по умолчанию $mn=0; тьфу блин совсем запутался я :(( ,а с $_GET['mn'.$ref] я действительно не понял что куда. | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 13:28)
| | Ну концерт :)) Я написал выше, может быть так должно:
<input name="mn" value="'.$ref.'" maxlength="'.$maxlen.'" /><br/> | |
|
|
|
|
|
|
|
для: sim5
(05.11.2007 в 13:31)
| | Почитайте выше воще уссытесь, не, без водки или пыха это мертвое дело, я сам над собой упарываюсь :)) | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 13:49)
| | Прочитал, и знаете ничего страшного не случилось, по крайней мере того что вы мне предрекали. | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 13:49)
| | Еу сделал! Вернул назад $session, убрал $mn=0; поставил <input name="mn" maxlength="'.$maxlen.'"/> все работает правильно и ошибок нет :) | |
|
|
|
|
|
|
|
для: Санька
(05.11.2007 в 13:49)
| | Почитал выше сообщение, щас по другом сделаю (поучусь). | |
|
|
|