Воскресенье, 22 Декабря 2024, 08:54

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
Урок по созданию браузерной игры № 2
anton-garДата: Понедельник, 04 Июля 2011, 18:41 | Сообщение # 161
WEBmaster
Сейчас нет на сайте
Quote (dmitryon008)
я делал коды и отправлял их сразу на хост (холм ру) а сайт называется www.kis-kotoram.h19.ru


Тестируй лучше на своей машине, какие ошибки выдаёт?


SektoidДата: Вторник, 05 Июля 2011, 16:22 | Сообщение # 162
почетный гость
Сейчас нет на сайте


Пол дня сидел за компом, но разобрался сам почти во всем, что было под с пойлером.
Осталось только сделать так, чтоб если ничего не введено, то не писало, что введено неправильно и убрать 2 надписи. Первая появляеться при переходе на страницу регистрации, вторая если не согласиться с правилами.
Notice: Undefined index: next in E:\Flash\xampp\htdocs\reg.php on line 19
Notice: Undefined index: rules in E:\Flash\xampp\htdocs\reg.php on line 32
Помогите плз))
Вот новый рег.пхп - может кому пригодиться (помню на какой-то странице уже задавали похожий вопрос):
Code
           <?php    
session_start(); //стартуем сесию    

include "conf.php"; //подключаем файл с параметрами БД    

/* Подключаемся к БД, если не получаеться, то выводим ошибку */    
$data = mysql_connect($base_name, $base_user, $base_pass);    
if(!mysql_select_db($db_name,$data)){    
                 echo "<BR>";    
                 echo mysql_error();    
                 die();    
}         
//Прверяем на заполнение полей    
$errm = " ";
$errp = " ";
$errr = " ";
$errr = " ";
        
if ($_POST['next']){ //если нажата кнопка далее, то    
$error=0;
    // переменная равна 0    
//Проверка на мыло    
if (!$_POST['email']){ $errm .= "Вы не ввели e-mail<br>"; $error=1;}    
if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;}    
$c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'")); {if ($c_e>0) {$errm .= "Данный e-mail уже зарегистрирован в игре"; $error=1;}}    
//Проверка на пароль    
if(!$_POST ["pass"]) {$errp .= "Необходимо указать Ваш пароль<br>"; $error =1;}    
if(!preg_match("/^[А-Яа-яЁёa-zA-Z0-9]+$/",$_POST ["pass"])) {$errp .= "Пароль содержит запрещенный символ<br>"; $error =1;}    
if (strlen ($_POST ["pass"])<6 || strlen ($_POST ["pass"])>25){ $errp .="Длина пароля от 6 до 25 символов<br>"; $error =1;}    
if ($_POST ["pass"]!= $_POST ["pass2"]){ $errp .="Введёные вами пароли не совпадают!"; $error =1;}    
//проверка на согласие с правилами    
if (!$_POST['rules']) {$errr .= "Вы не согласны с правилами?<br>"; $error=1;}    
// Нет ошибок, создаём перса    
if(!$error)    
{
$ip = $_SERVER['REMOTE_ADDR'];//узнаем ip адрес юзера    
/* Записываем данные в БД */    
mysql_query ("INSERT INTO users (pass, ip, email) values('".md5($_POST ["pass"])."','".$ip."','".addslashes($_POST ["email"])."')") or die("Invalid query: " . mysql_error());    
session_register("email");//регестрируем сессию email    
session_register("ip");//регестрируем сессию ip    
$_SESSION['user'] = $_POST['email']; //записуем email в глобыльную переменную $_SESSION    
$_SESSION['ip'] = $_POST['ip'];//записуем ip в глобыльную переменную $_SESSION    
?>    
<script>location.href="goreg.php";</script><!-- Переадресовуем на страничку создания чара -->    
<?php    
}    
}    
// Выводим ошибочки    
function err($text){    
return "<tr valign='middle' align='left'><td colspan='2'><span class='error'>$text</td></tr>";    
}    
?>    
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"    
             "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">    
<html xmlns="http://www.w3.org/1999/xhtml" lang="ru"             
xml:lang="ru">    
<head>    
<meta http-equiv="content-type" content="text/html; charset=utf-8" />     
<meta name="description" content="Браузерная Флеш игра BTG" />             
<meta name="keywords" content="игра, флеш, браузер, BTG, игроки." />             
<link rel="stylesheet" href="style.css" type="text/css" />    
<title>BTG – браузерная онлайн Flash игра</title>    
</head>    
<body>    
<div id="reg">    
<form action="" method="post">    
<!-- Создаем таблицу с помощью тега table и размещяем по-центру -->    
<table align="center">    
<!-- Создаем строку с помощью тега tr и разбиваем ее на 2 ячейки с помощью тега td -->     
<tr><td align="left" width="200">E-mail:</td><td><input type="text" value="<?php if(isset($_POST['email'])) {echo $_POST['email']; } ?>" name="email" class="inup"></td></tr>    
<?php echo err($errm); ?>    
<tr><td align="left" width="200">Пароль:</td><td><input type="password"  value="" name="pass" class="inup"></td></tr>    
<?php echo err($errp); ?>    
<tr><td align="left" width="200">Повторите пароль:</td><td><input type="password"  value="" name="pass2" class="inup"></td></tr>    
<!-- Закрываем таблицу -->    
</table>    
<!-- Создаем checkbox с именем rukes  -->    
<span><input type="checkbox" class="inup" name="rules"></span> Я обязуюсь соблюдать <A href="lib/law.php" target=_blank><B>Законы игры Test Game</B></A></p>    
<?php echo err($errr); ?>    
<input type="submit" name="next" value="Дальше" class="btn">    
</form>    
</div>    
</body>    
</html>


Сообщение отредактировал Sektoid - Вторник, 05 Июля 2011, 22:38
AssasinДата: Среда, 06 Июля 2011, 12:05 | Сообщение # 163
web-coder
Сейчас нет на сайте
Quote (Sektoid)
Notice: Undefined index: next in E:\Flash\xampp\htdocs\reg.php on line 19
Notice: Undefined index: rules in E:\Flash\xampp\htdocs\reg.php on line 32

Либо обьявить эти переменные в начале скрипта, либо использовать error_reporting();
Quote (Sektoid)
чтоб если ничего не введено, то не писало, что введено неправильно

Убрать эту строку
Code
if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;}
SektoidДата: Среда, 06 Июля 2011, 17:40 | Сообщение # 164
почетный гость
Сейчас нет на сайте
Quote (Assasin)
обьявить эти переменные в начале скрипта

Таким образом я убрал все остальные надписи, но эти две почему-то не хотят обьявляться. Может их по-другому как-то обьявить надо? sad
Остальные переменные я обьявлял так:
$errm = " ";
$errp = " ";
$errr = " ";
$errr = " ";

Quote (Assasin)
Убрать эту строку
Code
if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"])) {$errm .= "Неправильный e-mail"; $error =1;}

Ну это совсем уберет ответ о Неправильном мыле. А я хотел сделать только так, чтоб ошибка "Неправильный e-mail" не высвечивалась тогда, когда ничего не введено (потому что будет высвечиваться "Введите мыло"), но высвечивалась если пользователь неправильно ввел мыло.
Походу просто надо добавить в эту строку несовпадение не только с теми символами, но и с незаполненым полем, но я не смог найти как это сделать.


Сообщение отредактировал Sektoid - Среда, 06 Июля 2011, 18:33
AssasinДата: Среда, 06 Июля 2011, 18:59 | Сообщение # 165
web-coder
Сейчас нет на сайте
Code
if(!preg_match("/^[_\.0-9a-z-]{1,}@[_\.0-9a-z-]{1,}\.[_\.0-9a-z-]{2,}$/", $_POST ["email"]) && $_POST['email'] != "")

По поводу переменных исполшьзуй error_reporting();
SektoidДата: Среда, 06 Июля 2011, 19:41 | Сообщение # 166
почетный гость
Сейчас нет на сайте
Assasin, спасибо respect
PoZiTiFFДата: Понедельник, 01 Августа 2011, 21:07 | Сообщение # 167
уже был
Сейчас нет на сайте
доброго времени суток, возникла проблемка с переменными, насколько я понимаю, они определены в пхп коде, хтмл говорит что они не определены, помогите разобраться ) речь идёт о $errm $errp $errr

такс, разобрался, осталось разобраться с
Notice: Undefined index: rules in C:\apache\localhost\www\reg.php on line 32


Сообщение отредактировал PoZiTiFF - Вторник, 02 Августа 2011, 14:42
AssasinДата: Четверг, 04 Августа 2011, 11:36 | Сообщение # 168
web-coder
Сейчас нет на сайте
PoZiTiFF, это не фатальные ошибки. Просто Апач указывает что переменная не была обьявлена.
Master_ChiefДата: Четверг, 04 Августа 2011, 12:28 | Сообщение # 169
Shoot Space creator
Сейчас нет на сайте
PoZiTiFF, Assasin, это не просто переменная. В РНР 5.3 введены E_NOTICE для неустановленных переменных, индексов массивов и свойств объектов. Сам столкнулся с такой проблемой однажды. это индексы какого-то массива

PoZiTiFFДата: Пятница, 05 Августа 2011, 23:44 | Сообщение # 170
уже был
Сейчас нет на сайте
Assasin, я знаю что это не фатал, но как убрать этот нотис?)
sacha-onlineДата: Суббота, 08 Октября 2011, 22:46 | Сообщение # 171
был не раз
Сейчас нет на сайте
Assasin! Как просмотреть твои скрины? они не открываются!

я только учусь.. не будьте так строги со мной..
MineralkaДата: Воскресенье, 30 Октября 2011, 13:28 | Сообщение # 172
был не раз
Сейчас нет на сайте
Смотрю что есть нестыковки некоторые в сиснтаксисе MySQL
я делаю на 5,5,17 сейчас а автор использовал более ранние версии.

Есть смысл перейти на предыдущие версии или найдется кто поможет?

далее..

сейчас висят ошибки
Notice: Undefined index: next in C:\xampp\htdocs\reg.php on line 12

Code

   if ($_POST['next']){ //если нажата кнопка далее, то   


Notice: Undefined variable: errm in C:\xampp\htdocs\reg.php on line 72
Code

<?php echo err($errm); ?>

Notice: Undefined variable: errp in C:\xampp\htdocs\reg.php on line 78

Code

<?php echo err($errm); ?>


ругалось так же на
Code

session_register("email")


но где то прочел что в данной версиии регистрация не обязательно, достаточно присвоить

Code

$_SESSION['user'] = $_POST['email'];   


так ли это?

и далее
Code

mysql_query ("INSERT INTO users (pass, ip, email) values('".md5($_POST ["pass"])."','".$ip."','".addslashes($_POST ["email"])."')") or die("Invalid query: " . mysql_error());   


возвращает ошибку

Invalid query: Data too long for column 'pass' at row 1

пароль 6 буквенный поле чар16..
вероятно передается чтото неправильно в переменную?
AssasinДата: Воскресенье, 30 Октября 2011, 15:18 | Сообщение # 173
web-coder
Сейчас нет на сайте
Эти ошибки означают что переменная не была объявлена ранее, что бы из не было юзай
Code

if (!empty($_POST['blablabla']))
if (!empty($errm)) { echo err($errm); }

Quote (Mineralka)

но где то прочел что в данной версиии регистрация не обязательно, достаточно присвоить
$_SESSION['user'] = $_POST['email'];

Да, можно делать так как ты написал.
По поводу записи в БД
Quote
MD5-хеши
Хеш содержит 128 бит (16 байт) и обычно представляется как последовательность из 32 шестнадцатеричных цифр.

Из этого следует что длина пароля 32 символа, а у тебя 16, правь.
MineralkaДата: Воскресенье, 30 Октября 2011, 16:46 | Сообщение # 174
был не раз
Сейчас нет на сайте
Все прекрасно, идем дальше)
BigManCobraДата: Воскресенье, 27 Ноября 2011, 16:49 | Сообщение # 175
был не раз
Сейчас нет на сайте
У меня такая проблема когда я захожу на страницу реги меня не кидает на страницу а показывает код страницы вот скрин : http://iscr.ru/1322398069/
LevinДата: Воскресенье, 27 Ноября 2011, 16:51 | Сообщение # 176
Художник
Сейчас нет на сайте
залеи файлъ на хостинг и все будет ок.


BigManCobraДата: Воскресенье, 27 Ноября 2011, 16:52 | Сообщение # 177
был не раз
Сейчас нет на сайте
У меня такая проблема когда я захожу на страницу реги меня не кидает на страницу а показывает код страницы вот скрин : http://iscr.ru/1322398069/
LevinДата: Воскресенье, 27 Ноября 2011, 16:52 | Сообщение # 178
Художник
Сейчас нет на сайте
на гм.длл.мирбб.нет это все описано.


какашиДата: Воскресенье, 04 Декабря 2011, 13:30 | Сообщение # 179
был не раз
Сейчас нет на сайте
Спасибо оч познавательно
Ilyko96Дата: Пятница, 30 Декабря 2011, 00:18 | Сообщение # 180
почетный гость
Сейчас нет на сайте
Здрасте!
Матерится на функцию mysql_num_rows():
Code
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/a8313309/public_html/reg.php on line 19


В скрипте строчка:
Code
$c_e = mysql_num_rows(mysql_query("SELECT id_user FROM users where email='".$_POST ["email"]."'"));

почему так?

Добавлено (30.12.2011, 00:18)
---------------------------------------------
Разобрался! Оказывается мускул придирчив к регистру и таблица "users" и "Users" это 2 разные таблицы!
еще возникла проблема кодировок (юзаю иностранный php сервер)...
Чуть-чуть погугли на эту тему, нашел пару способов решения этого трабла, но, почему-то, никакой не помог =((((( Видимо мне придется все же ставить Денвер (не нравится он мне почему-то...) или xamnp =((




МОЙ КАНАЛ


Сообщение отредактировал Ilyko96 - Вторник, 07 Февраля 2012, 19:23
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг