Перейти к содержимому

Реферальная программа Мегаплана


Ничего не выводится после вызова метода

#31 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5
0

Отправлено 05 Апрель 2013 - 13:56

html-ka, fedornabilkin, я переделал метод selAva вот так
public function selAva() // ф-ция для выбора аватарки - либо своей, если есть, либо системной (если нет своей)
{
  //$ava = $this->selAssoc("avatars", "id, ava_name", "user_id = '".intval($_GET['id'])."' AND status = 2");
  $a = mysql_query("SELECT id, ava_name FROM avatars WHERE user_login = '".$_GET['login']."' AND status = 2");
  $ava = mysql_fetch_assoc($a);
  if (!empty($ava))
  {
   $src = "avatars/".$ava["id"].$ava["ava_name"];
  }
  else
  {
   $src = "sys-images/no-avatar.gif";
  }
  return $src;
}
то есть не стал в этом методе вызывать selAssoc, вы же сказали, что в цикле запрос не надо делать. Теперь по логину вроде нормально работает. Так метод нормально должен работать?
  • 0

#32 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 05 Апрель 2013 - 14:01

олько ты пропустил
$result = mysql_query($a) or die(mysql_error());
и не помешает проверить, что заким соответствующая условиям существует
if(mysql_num_rows($result) > 0){
// а в нем уже все безобразие )))
}

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

и все-таки задумайся о безопасности, в твоем случая $_GET['login']
  • 0

#33 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 05 Апрель 2013 - 14:13

задумайся о безопасности, в твоем случая $_GET['login']

Одна из причин, почему удобнее использовать айдишники пользователей.
Когда я добавлял аватары в юзерку, я просто добавил поле в таблицу users, в которое прописывал путь к картинке.
Этот путь выводится общим запросом вместе с данными пользователя.

Но даже если есть необходимость использовать отдельную таблицу для аватаров, то удобнее все-таки сделать сложный SQL. Будет и быстрее и удобнее наверно.
Тем более из скрина видно, что особой статистики по аватарам не выведешь. Количество штук, время загрузки аватара и какой-то еще статус, как я понимаю.
Или стоят иные задачи, в связи с чем приходится использовать отдельную таблицу?
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#34 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 05 Апрель 2013 - 14:17

и все-таки задумайся о безопасности, в твоем случая $_GET['login']

такая проверка достаточна?
$login = trim($_GET["login"]);
  $login = strip_tags($login);
  $login = htmlspecialchars($login);
  $login = mysql_real_escape_string($login);

Или стоят иные задачи, в связи с чем приходится использовать отдельную таблицу?

особых задач нет, надо только чтобы при загрузке сохранялся сам аватар и его миниатюра. И чтобы через GET передавался логин, а не айди
  • 0

#35 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 05 Апрель 2013 - 14:20

mysql_real_escape_string($login);
лучше сразу в sql запрос добавлять
  • 0

#36 fedornabilkin

fedornabilkin
  • Пользователь
  • 696 сообщений
  • Репутация: 91

Отправлено 05 Апрель 2013 - 14:23

особых задач нет

Я так понял, что данные пользователя на странице уже выводятся.
Поэтому делай дополнительное поле, в которое пиши названия загруженных аватаров. Сохраняй их в папку img/avatars например (обязательно переименовывай при загрузке).
Превьюшку (миниатюру) можно нарезать при загрузке или при обращении. Думаю так удобнее и проще, что бы не хранить их отдельно. Возможно ошибаюсь.
  • 0
Как часто в горестной разлуке,В моей блуждающей судьбе, ФО, я думал о тебе.


#37 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 07 Апрель 2013 - 15:12

mysql_real_escape_string($login);
лучше сразу в sql запрос добавлять

а вместо нее нельзя addslashes использовать?
  • 0

#38 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 07 Апрель 2013 - 15:20

ты почитай в чем отличия и сразу все поймешь, т.к. addslashes может пропустить скулю, вот для затравки.

addslashes
Экранируются одиночная кавычка ('), дойная кавычка ("), обратный слэш () и NUL (байт NULL).

mysql_real_escape_string
вызывает библиотечную функцмю MySQL mysql_real_escape_string, которая добавляет обратную косую черту к следующим символам: x00, n, r, , ', " and x1a.
Эта функция должна всегда (за несколькими исключениями) использоваться для того, чтобы обезопасить данные, вставляемые в запрос перед отправкой его в MySQL.

Замечание: mysql_real_escape_string() не экранирует символы % и _. Эти знаки являются масками групп символов в операторах MySQL LIKE, GRANT или REVOKE.

ЗЫ, уже пора переходить на mysqli или PDO, т.к. в php 5.5 поддержка mysql будет прекращена, да и эти библиотеки позволяют работать с подготовленными запросами, что сводит к нулю эксплуатацию скулей.
  • 0

#39 Kuchuluk

Kuchuluk
    Topic Starter
  • Пользователь
  • 315 сообщений
  • Репутация: 5

Отправлено 08 Апрель 2013 - 19:19

ЗЫ, уже пора переходить на mysqli или PDO, т.к. в php 5.5 поддержка mysql будет прекращена, да и эти библиотеки позволяют работать с подготовленными запросами, что сводит к нулю эксплуатацию скулей.

это получается СУБД MySQL вообще не будет со временем?
  • 0

#40 html-ka

html-ka
  • Пользователь
  • 455 сообщений
  • Репутация: 82

Отправлено 08 Апрель 2013 - 20:09

почему не будет, будет, она живет и развивается )
в предыдущем посте я имел ввиду библиотеку php - mysql, на ее смену приходит mysqli
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru