Loading...
Обучение/Помощь новичкам | Форма отправки текста в бд. помогите. туплю.
по сути форма для того чтобы пользователь мог отправить в бд
sql
   avatar_user   
ссылку нв изображение которое будет отображаться вместо аватара персонажа. При отпраке кидает на
html
   /avatar/gold.php  ?err=1     
.tap.

php
   <?php 
$location = true;
require_once($_SERVER['DOCUMENT_ROOT']."/core/func.php");
logs();
head("Смена аватара",$uid);
$r = rand(100000,999999);
//
//
if(isset($_REQUEST['ok'])){
$avatar_new = abs(intval($_POST['avatar_user']));
{
header('location:?err=1');
exit();
}


qry("UPDATE `users` SET `avatar_user` = ? WHERE `id` = ? LIMIT 1", array($avatar_new,$uid));
msg2("Смена прошла успешно");
header('location:?');
exit();
}
//
//
?>
<div class="tophead">
</div>

<div class="tophead cntr">
Ведите полный URL адрес картинки или фото
<br>

<form method="post" action="/avatar/gold.php" >
<input class="" type="text" name="avatar_new" maxlength="255" value="http://" />
<br>
<input type="submit" name="ok" class="" value="Сменить">
</form>
</div>
<a href="/shop.php" class="tophead">Вернуться назад</a>
<?
//
//
foot($uid);
//
//
?>
136412448 ,
1.
<input class="" type="text" name="avatar_new" maxlength="255" value="http://" />

и здесь

$avatar_new = abs(intval($_POST['avatar_user']));

Названия полей разные.

--------------------

2. И здесь не понятно что за фигурные скобки:
$avatar_new = abs(intval($_POST['avatar_user']));
{
header('location:?err=1');
exit();
}

Предполагаю что так должно быть:
if (empty($avatar_new)) {
header('location:?err=1');
exit();
}
________
посл. ред. 28.03.2021 в 01:08; всего 1 раз(а); by Мистика
Как я понимаю что-то не хватает.

php
   if(проверка){ 
header('location:?err=1');
exit();
}
3.
Числовые фильтры здесь лишние
$avatar_new = abs(intval($_POST['avatar_user']));

Должно быть, что то наподобие:
$avatar_new = mysql_real_escape_string($_POST['avatar_user']);
Мистика , там немного больше кода я планировал и в оригинале (точнее в желаемом варианте) всё выглядит так
php
   <?php 
$location = true;
require_once($_SERVER['DOCUMENT_ROOT']."/core/func.php");
logs();
head("Смена аватара",$uid);
$r = rand(100000,999999);
//
//
if(isset($_REQUEST['ok'])){
$ava = abs(intval($_POST['ava']));
$ruby = $user['gold'];

if($user['avatar_lock'] == 2){
header('location:?err=1');
msg2("Вам запрещено менять аватар по причине нарушения пользовательского соглашения");
exit();
}

if($user['avatar_lock'] == 1){
header('location:?err=2');
msg2("Смена аватара доступна только с премиумом.");
exit();
}

if($ruby < 500){
header('location:?err=3');
msg2("У вас недостаточно рубинов");
exit();
}

qry("UPDATE `users` SET `gold` = `gold` - ?, `avatar_user` = ?, `avatar` = ? WHERE `id` = ? LIMIT 1", array(500,$ava,8,$uid));
msg2("Обмен прошел успешно");
header('location:?');
exit();
}
//
//
?>
<div class="tophead">
<li>Стоимость смены<img src="/images/ruby.png" width="17px" height="17px" alt=""> 500 рубинов</li>
<li>У вас: <img src="/images/ruby.png" width="17px" height="17px" alt=""> <?=$user['gold'];?> рубинов</li>
</div>

<div class="tophead cntr">
Укажите ссылку изображения размещённого в сети интернет
<br>
<form action="/avatar/gold.php?" method="post">
<input class="" type="text" name="ava" maxlength="255" value="http://" />
<br>
<input type="submit" name="ok" class="" value="Обменять">
</form>
</div>
<a href="/shop.php" class="tophead">Вернуться назад</a>
<?
//
//
foot($uid);
//
//
?>

но изза того что неполучалось убрал все ограничители лишь бы отправить данные в
php
   avatar_user   
сейчас кажется что проблема всётаки в самой строке
php
   avatar_user   
которая принимает инфу в бд
Алексей ,
#4 пост смотрите.

В базу всегда 0 будет записываться. Т.к abs и intval ничего не пропускают, кроме числовых значений
________
посл. ред. 28.03.2021 в 02:01; всего 1 раз(а); by Мистика
Мистика ,
avatar_user

тип VARCHAR
длина 255

по умолчанию Нет

сравнение utf8_general_ci

NULL нет

не знаешь может быть здесь что то не верно? Кстати когда создавал выбрал дефолт 0, а уже потом отредактировал на нет и теперь у всех в avatar_user 0 валяется
Мистика ,
php
   $avatar_new = mysql_real_escape_string($_POST['avatar_user']);   
это приемлимо для php7?
может быть просто qry?
Алексей , Я всего лишь пример привела. Говорю к тому, что фильтровать нужно как строку, а никак число.
А с обёрткой БД "qry" я незнакома.
________
посл. ред. 28.03.2021 в 02:09; всего 1 раз(а); by Мистика
Онлайн: 3
Время:
Gen. 0.0978
(c) Bym.Guru 2010-2026