| Help изменения значения | 
|  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 01:07 | Сообщение # 1 |  |   PHP-MasteR Сейчас нет на сайте | Написал php код чтоб изменить имя мне: Принцип такой:
 Вводишь Свой Ид
 Вводишь новое имя
 
 Дело в том что любой может изменить мое имя написав мой id
 Как мне сделать только чтоб один игрок мог свой ид делать
 
 Проблемы индейцев - вождя не волнуют....
 
   
 
 Сообщение отредактировал VipCat - Пятница, 27 Июля 2012, 01:30 |  |  |  |  | 
| 
| Sektoid | Дата: Пятница, 27 Июля 2012, 01:39 | Сообщение # 2 |  | почетный гость Сейчас нет на сайте | Сделать привязку по айпи? Ну типа при логине в БД записывать ип и потом тупо сравнивать.
 |  |  |  |  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 02:16 | Сообщение # 3 |  |   PHP-MasteR Сейчас нет на сайте | Опиши в php ибо я не силен пока 
 Добавлено (27.07.2012, 02:04)
 ---------------------------------------------
 И лучше сделать привязку к ID
 
 Добавлено (27.07.2012, 02:16)
 ---------------------------------------------
 Люди хелп написал скрипт изменения имени покемона вот он:
 
 Code <? include ("bd.php");
 if(isset($_POST['id']))
 {
 if(empty($_POST['id']) and empty($_POST['name']))
 {
 echo "<script>alert('Не все поля заполнены'); location.href='admin.php';</script>";
 exit;
 }
 else
 {
 $query = "INSERT INTO pokemon_user(id,name)";
 $query .= "Values ('".$_POST['id']."','".$_POST['name']."')";
 $result = mysql_query($query,$db) or die("Query failed : " . mysql_error());
 echo "<script>alert('Вы удачно сменили имя !');</script>";
 }
 }
 ?>
 
 <center>
 <form action="" method="POST">
 ID игрока: <input type="text" name="id"/>
 <br />
 Новое имя: <input type="text" name="name"/>
 <br />
 <input type="submit" value="Сменить имя" />
 </form>
 </center>
Не работает :(( Не изменят имя
 Ошибка : Query failed : Duplicate entry '1' for key 'PRIMARY'
 
 Проблемы индейцев - вождя не волнуют....
 
   
 
 Сообщение отредактировал VipCat - Пятница, 27 Июля 2012, 02:38 |  |  |  |  | 
| 
| maker-rus | Дата: Пятница, 27 Июля 2012, 02:40 | Сообщение # 4 |  |   Гений Сейчас нет на сайте | Попробуй сделать так, в сессию добавь свой ID. Сделай одно поле с новым ником. И просто в значение ID вставляй ID из сессии.
 
 Code  <?php
 //Некая сессия
 //Её создавать как только пользователь авторизируется
 session_start();
 $_SESSION["ID"] = $ID; // $ID - значение из базы
 ?>
 
а потом где идёт смена ника сделать вот это:
 
 Code  <?php
 //Добавляем значения
 $MyID = $_SESSION["ID"]; //ID из сессии
 $newNikName = $_GET или $POST["nikname"]; //новый ник взятый из запроса $_POST или $_GET
 $sql = mysql_query("INSERT INTO name_tablets (nikname,lastChange) VALUES IDnikname=$myID, nikname=$newnikname");
 ?>
код не копировать это лишь приблизительный вариант!
   
 
 Сообщение отредактировал maker-rus - Пятница, 27 Июля 2012, 02:43 |  |  |  |  | 
| 
| Nosorog | Дата: Пятница, 27 Июля 2012, 02:43 | Сообщение # 5 |  |   участник Сейчас нет на сайте | Quote (VipCat) Дело в том что любой может изменить мое имя написав мой id Наверняка, в сессиях хранится твой id - зачем его вводить?!
 
 Quote (VipCat) $query = "INSERT INTO pokemon_user(id,name)"; $query .= "Values ('".$_POST['id']."','".$_POST['name']."')";
Кури
  UPDATE , а не INSERT 
 Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
 |  |  |  |  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 02:48 | Сообщение # 6 |  |   PHP-MasteR Сейчас нет на сайте | Чуть почитав команды я понял что INSERT INTO это добавляет значения в базу а мне надо изменить и я переделал 
 Code  <?
 include ("bd.php");
 if(isset($_POST['id']))
 {
 if(empty($_POST['id']) and empty($_POST['name']))
 {
 echo "<script>alert('Не все поля заполнены'); location.href='admin.php';</script>";
 exit;
 }
 else
 {
 $query = "UPDATE pokemon_user";
 $query .= "SET 'id','name'";
 $result = mysql_query($query,$db) or die("Query failed : " . mysql_error());
 echo "<script>alert('Вы удачно сменили имя !');</script>";
 }
 }
 ?>
 
 <center>
 <form action="" method="POST">
 ID игрока: <input type="text" name="id"/>
 <br />
 Новое имя: <input type="text" name="name"/>
 <br />
 <input type="submit" value="Сменить имя" />
 </form>
 </center>
 
Все ровно не получается помогите мне сформулировать грамотно запрос.
 Ошибка: Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''id','name'' at line 1
 
 Добавлено (27.07.2012, 02:45)
 ---------------------------------------------
 УРАА ДОБРЫЙ NOSOROG !!!!!!!!!
 Помоги о великий
   
 Добавлено (27.07.2012, 02:46)
 ---------------------------------------------
 
 Quote Наверняка, в сессиях хранится твой id - зачем его вводить?! Не мой ид а ИД, а покемона он в сессии не хранится.
 
 Добавлено (27.07.2012, 02:48)
 ---------------------------------------------
 РЕБЯТА ИД НЕ МОЙ НАДО , А ПОКЕМОНА и лучше через какой нить zapretsmenanick в базе данных int(11) Чтоб потом можно было выставить 0 И опять пользователь мог поменять имя
 
 Проблемы индейцев - вождя не волнуют....
 
   
 
 Сообщение отредактировал VipCat - Пятница, 27 Июля 2012, 02:50 |  |  |  |  | 
| 
| Nosorog | Дата: Пятница, 27 Июля 2012, 02:49 | Сообщение # 7 |  |   участник Сейчас нет на сайте | $query = "UPDATE `pokemon_user` SET `name`= {$_POST[name]} WHERE `id`={$_POST[id]};"; 
 Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
 |  |  |  |  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 03:00 | Сообщение # 8 |  |   PHP-MasteR Сейчас нет на сайте | Quote (Nosorog) $query = "UPDATE `pokemon_user` SET `name`= {$_POST[name]} WHERE `id`={$_POST[id]};"; 
пишет Query failed : Unknown column 'NewNick' in 'field list'
 Добавлено (27.07.2012, 03:00)---------------------------------------------
 А когда вводишь правильный то пишет
 Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Blastoise WHERE `id`=1' at line 1
 
 Проблемы индейцев - вождя не волнуют....
 
   |  |  |  |  | 
| 
| maker-rus | Дата: Пятница, 27 Июля 2012, 03:04 | Сообщение # 9 |  |   Гений Сейчас нет на сайте | Quote (VipCat) А когда вводишь правильный то пишет Query failed : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Blastoise WHERE `id`=1' at line 1
 
 
попробуй так.
 
 Code  $newname = $_POST['name'];
 $id= $_POST['id'];
 $query = "UPDATE pokemon_user SET name=$newname WHERE id=$id";
 
 
 Сообщение отредактировал maker-rus - Пятница, 27 Июля 2012, 03:05 |  |  |  |  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 03:06 | Сообщение # 10 |  |   PHP-MasteR Сейчас нет на сайте | То же самое ( 
 Проблемы индейцев - вождя не волнуют....
 
   |  |  |  |  | 
| 
| Nosorog | Дата: Пятница, 27 Июля 2012, 03:09 | Сообщение # 11 |  |   участник Сейчас нет на сайте | $query = "UPDATE `pokemon_user` SET `name`= '{$_POST[name]}' WHERE `id`={$_POST[id]};"; кавычки
   
 Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
 |  |  |  |  | 
| 
| maker-rus | Дата: Пятница, 27 Июля 2012, 03:09 | Сообщение # 12 |  |   Гений Сейчас нет на сайте | сохранили новый код? И конкретно заново скопируйте ошибку!
 |  |  |  |  | 
| 
| Nosorog | Дата: Пятница, 27 Июля 2012, 03:29 | Сообщение # 13 |  |   участник Сейчас нет на сайте | Кстати, zapretsmenanick - это WHERE `id владельца`= 'id владельца' 
 Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
 |  |  |  |  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 18:35 | Сообщение # 14 |  |   PHP-MasteR Сейчас нет на сайте | Спасибо всем.... получилось. А вот на счет запрет смены ника я не понял как сделать по подробнее 
 Проблемы индейцев - вождя не волнуют....
 
   |  |  |  |  | 
| 
| Nosorog | Дата: Пятница, 27 Июля 2012, 19:09 | Сообщение # 15 |  |   участник Сейчас нет на сайте | Тоже самое: $query = "UPDATE `pokemon_user` SET `name`= '{$_POST[name]}' WHERE `id`={$_POST[id]} AND `id_owner`='{$_SESSION[user_id]}';";
 Наверняка в таблице `pokemon_user` есть столбец, в котором указывается id юзера
 
 Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
 |  |  |  |  | 
| 
| VipCat | Дата: Пятница, 27 Июля 2012, 19:30 | Сообщение # 16 |  |   PHP-MasteR Сейчас нет на сайте | Слушай я на счет <?
 include ("bd.php");
 if(isset($_POST['id']))
 {
 if(empty($_POST['id']) and empty($_POST['name']))
 {
 echo "<script>alert('Не все поля заполнены'); location.href='admin.php';</script>";
 exit;
 }
 else
 {
 $query = "UPDATE `pokemon_user` SET `name`= '{$_POST[name]}' WHERE `id`={$_POST[id]} AND `user`='{$_SESSION[user]}';";
 $result = mysql_query($query,$db) or die("Query failed : " . mysql_error());
 echo "<script>alert('Вы удачно сменили имя !');</script>";
 }
 }
 ?>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5 Transitional//EN">
 <html>
 <head>
 <link rel="stylesheet" type="text/css" href="../game.css">
 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /><meta http-equiv="Content-Type" content="text/html; charset=windows sp1251" />
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 </head>
 <body>
 
 <center>
 <form action="" method="POST">
 <input type="text" name="id" placeholder=" ID вашего покемона:"/>
 <br />
 <input type="text" name="name" placeholder=" Новое имя"/>
 <br />
 <input type="submit" value="Сменить имя" />
 </form>
 </center>
 
 </body>
 </html>
 Не меняет имя. Просто пишет Вы удачно сменили имя но имя не меняет.
 
 Проблемы индейцев - вождя не волнуют....
 
   |  |  |  |  | 
| 
| lliberty | Дата: Пятница, 27 Июля 2012, 19:51 | Сообщение # 17 |  | был не раз Сейчас нет на сайте | Первое что приходит в голову - ты используешь переменную сессии ($_SESSION[user]), но нигде в скрипте нет подключения к сессиям (session_start();). Естественно что $_SESSION[user] будет просто пустая строка. (UPDATE ... WHERE ... `user`='') 
 У тебя где-то еще сессии используются? Как пользователь авторизируется в игре?
 |  |  |  |  | 
| 
| 4ssh0l3 | Дата: Пятница, 27 Июля 2012, 21:06 | Сообщение # 18 |  | был не раз Сейчас нет на сайте | Quote (Nosorog) $query = "UPDATE `pokemon_user` SET `name`= '{$_POST[name]}' WHERE `id`={$_POST[id]} AND `id_owner`='{$_SESSION[user_id]}';";Носорог, а зачем ты здесь переменные в фигурные скобки заворачиваешь? Без них то же самое же.
 |  |  |  |  | 
| 
| Nosorog | Дата: Пятница, 27 Июля 2012, 22:25 | Сообщение # 19 |  |   участник Сейчас нет на сайте | 4ssh0l3, Это привычка   
 Классическая ошибка, которую совершают проектировщики абсолютно надёжных систем, - недооценка изобретательности клинических идиотов.
 |  |  |  |  | 
| 
| VipCat | Дата: Суббота, 28 Июля 2012, 01:57 | Сообщение # 20 |  |   PHP-MasteR Сейчас нет на сайте | Code <?  include ("bd.php");
 session_start();
 if(isset($_POST['id']))
 {
 if(empty($_POST['id']) and empty($_POST['name']))
 {
 echo "<script>alert('Не все поля заполнены'); location.href='admin.php';</script>";
 exit;
 }
 else
 {
 $query = "UPDATE `pokemon_user` SET `name`= '{$_POST[name]}' WHERE `id`={$_POST[id]} AND `user`='{$_SESSION[user]}';";
 $result = mysql_query($query,$db) or die("Query failed : " . mysql_error());
 echo "<script>alert('Вы удачно сменили имя !');</script>";
 }
 }
 ?>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 5 Transitional//EN">
 <html>
 <head>
 <link rel="stylesheet" type="text/css" href="../game.css">
 <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE8" /><meta http-equiv="Content-Type" content="text/html; charset=windows sp1251" />
 <meta http-equiv="content-type" content="text/html; charset=windows-1251">
 </head>
 <body>
 
 <center>
 <form action="" method="POST">
 <input type="text" name="id" placeholder=" ID вашего покемона:"/>
 <br />
 <input type="text" name="name" placeholder=" Новое имя"/>
 <br />
 <input type="submit" value="Сменить имя" />
 </form>
 </center>
 
 </body>
 </html>
 
 
Заменил на это пишет вы удачно сменили имя покемону , захожу проверяю не меняет
 
 Проблемы индейцев - вождя не волнуют....
 
   |  |  |  |  |