Если это злоумышленник, то ему не составит труда посмотреть при первом логине свой хеш и подставить его затем в форму при втором, таким образом становясь для системы "правильным" пользователем.
Все, что отдается клиенту - не может быть доверенной информацией.
C чего Вы взяли что это поможет? При входе у пользователя 1 hash(session_id) а при каждом заходе нужно просто менять этот session_id. И тогда каждый 2 пользователь вошедший "выбьет" из системы 1 - го пользователя так как session_id уже измениться
Не стал разбираться конкретно с Вашим запросом, но суть Вашей проблемы понял.
Приведу не большой пример:
это проверка на существование get параметра input, если он существует то присваиваем переменной $input_sql кусок нужного sql запроса, если его нет то оставляем эту переменную пустой. $where я сделал переменной если условий и вовсе не будет...
Это должно работать все переменные запросы оберните в такие кавычки '".$var."'
Как я Вам выше написал, если не поможет то увы я даже не знаю что тут может быть...
$quer="SELECT * from `BALANCE` where `B_DokVid`='".$DokVid."' AND `B_NomerDok`='".$DokNomer."' AND `B_Filial`='".$filial."' AND `B_Time`='".$DokVremia."' AND `B_Dt`= '".$DokDt."' AND `B_Kt`= '".$DokKt."' AND `B_Comment`='".$DokComment."' AND `B_NomStroki`='".$Dopolnitelno."' LIMIT 1";
$quer="SELECT * from `BALANCE` where `B_DokVid`='$DokVid' AND `B_NomerDok`='$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`=$DokDt AND `B_Kt`=$DokKt AND `B_Comment`='$DokComment' LIMIT 1";
$quer="SELECT * from `BALANCE` where `B_DokVid`='".$DokVid."' AND `B_NomerDok`='".$DokNomer."' AND `B_Filial`='".$filial."' AND `B_Time`='".$DokVremia."' AND `B_Dt`= $DokDt AND `B_Kt`= $DokKt AND `B_Comment`='".$DokComment."' AND `B_NomStroki`='".$Dopolnitelno."' LIMIT 1";
echo"SELECT * FROM `BALANCE` WHERE `B_DokVid`= '$DokVid' AND `B_NomerDok`= '$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`= '$DokDt' AND `B_Kt`= '$DokKt' AND `B_Comment`= '$DokComment' AND `B_NomStroki`= '$Dopolnitelno' LIMIT 1";
И посмотрите на запрос на экране, скорее всего в переменных дело.
SELECT * FROM `BALANCE` WHERE `B_DokVid`='$DokVid' AND `B_NomerDok`='$DokNomer' AND `B_Filial`='$filial' AND `B_Time`='$DokVremia' AND `B_Dt`='$DokDt' AND `B_Kt`='$DokKt' AND `B_Comment`='$DokComment' AND `B_NomStroki`='$Dopolnitelno' LIMIT 1
В качестве базы данных использую redis(который хранит все данные в ram) и хранения 300 постов от 10 тыс пользователей это примерно около 1 гига оперативки. Но читать больше 300 постов 1 пользователя будут единицы. То есть я хочу что бы в оперативки хранилось определенное кол-во записей, которые будут часто использоваться(то есть самые последние). Но вот не задача ведь кто-то может захотеть просмотреть записи пользователя и за прошедшие месяцы и т.д. И я вот думаю что для таких случаев необходимо держать эти посты еще и в другой бд которая хранит свои данные на жестком диске. К примеру mysql или sqlite. Но для этого понадобится при опубликовании постов делать как минимум два запроса на запись одного и того же в 2 бд. Может сделать какой нибудь типа планировщик на другом сервере который будет получать данные(посты) и уже он будет записывать эти данные в бд(mysql или sqlite). Потом уже если нужно забирать данные с этого сервера(из бд я имею ввиду). А основной сервер спокойно продолжать работу дальше. Посоветуйте пожалуйста как тут быть? может есть у кого-нибудь решения по лучше...