в setcookie важен 4 и 5 параметр, да и 3 я бы тоже советовал ставить
Читал про параметры, как у нас, так и на php.net:
setcookie($name, $value, $expire, $path, $domain, $secure, $httponly);
$expire я не задаю,
$path - я не понял в чем смысл. Мне бы на примере. У меня, например, единая точка входа index.php. Какие "директории"?
$domain - тоже не понял. У меня например mysite.com. Все домены 3, 4 и ... уровней под контролем. Отсюда, я так понимаю, можно ничего не указывать.
$secure - тут я ставлю true. У меня https://. Я полагаю, куки тоже шифруются. Я прав?
$httponly - false. Мне надо менять куки JS. На всякий случай еще раз убедился, что xss уязвимостей нет
Задача такая:
процесс авторизации заканчивается header('location: mysite');exit;
Пользователь, перенаправившись на указанную страницу, проходит проверка на одну из кук.
Необходимо сделать так, чтобы кука уже была установлена, что у меня не получается.
Я пробовал так: до вызова header() сделать setcookie('x', $value);
Но в коде после перенаправления этой куки нет.
Еще пробовал так: сначала написал header("Set-Cookie: {'x'}={'myValue'};"); затем header('location: mysite');exit;
После перенаправления этой куки опять вроде бы нет.
Есть таблица в ней около 50 полей при этом 5 TEXT, остальные примерно 50/50 VARCHAR (255) и INT(11)
Записей планируется около 400-500 тыс.
насколько преступна такая структура?
можно ее такой оставить или имеет смысл разбить, т.к. в целом можно попробовать раскидать на 5 таблиц.
Я бы обязательно разбил. У меня была похожая ситуация, здесь имеет смысл в зависимости от будущих запросов к этой таблице сгруппировать колонки в группы: наиболее используемые вынести в одну таблицу, менее используемые - в несколько других. Менее используемые колонки разбейте по схожести данных, которые будут часто выводиться вместе при будущих запросах
Для этого надо узнать id добавленных авторов.
insert_id отдаст только последний.
Следовательно надо или:
0) делать insert в цикле и запоминать id. Поскольку запись операция редкая - запросы в цикле здесь оправданы.
1) или искать только что добавленные строки. Удобно, если есть уникальный индекс. Тогда можно сразу insert ... select'ом переписать в таблицу связей.
Если речь неожиданно не о mysql, а о postgres - то insert ... returning
Извиняюсь,но не смог 0 вариант сделать..Может подскажете более детально?..
СУБД Postgres имеет навороты практически наравне с Oracle, но в отличии от него является бесплатной. Например, можно сделать вставку[удаление, изменение] и вернуть получившийся результат:
Insert into mytable (field1, filed2) VALUES ('value1','value2') Returning *;
$sth=$this->db->query("SELECT name, id FROM user WHERE login = '$login' AND password = '$password';");
return$sth->fetchAll(PDO::FETCH_ASSOC);
query быстрее при небольшом числе однотипных запросов,
используя переменные в одинарных кавычках, предварительно проверьте их на отсутствие кавычек
Выполняйте fetchAll для получения двумерного массива (строки, поля) данных
получается нужно в каждом запросе на всех модулях и страницах сайта прописывать условие при выборке вроде "WHERE flag=1". Мне кажется не удобно
Это еще цветочки...
А так посоветовать могу следующее: если у Вас в коде php много мест с одной и той же выборкой, то лучше сделать выборку из вьюхи, и потом исправлять вьюху - так будет быстрее, чем "шерстить" весь код на php.
Обе Ваши реализации имеют место быть - как и с отдельной таблицей, так и с вставкой в одну таблицу. Далее следует определиться:
Разграничение таблиц имеет смысл в том случае
1) когда мы хотим ограничить внешние ключи, ссылающиеся (или которые будут ссылаться) на таблицу.
2) или когда хранимые данные в таблицах в будущем будут различаться по полям
Сбор данных в одну таблицу имеет смысл:
1) если все данные по полям не особо различаются,
2) если есть дочерняя таблица с внешними ключами на эту. Реализовать дочернюю таблицу с внешними ключами на две и более таблиц - можно, несложно, но муторно и некрасиво.
Я бы рекомендовал второй вариант - хранить все в одной таблице. По мере развития приложения решение о разграничении таблицы на две раздельные само придет в голову, когда будет в этом необходимость
Для начала необходимо озвучить используемую Вами СУБД.
Советую
1)файлы *.php сохранять в кодировке UTF-8,
2)БД при создании указать тоже в этой кодировке,
3) и пометьте страницу для браузера
<html>
<head>
<meta charset="utf8">
</head>
</html>
Если все условия выполнены, проблем не должно быть