Session and insert into DB
11 отговора
207 прегледа
Session and insert into DB
Здравейте,
Имам сериозен проблем:
Имам сите които има списък с файлове и съответно тези файлове могат да се свалят. Въпросът обаче е че има две рестрикции:
1. Файловете да са защитени
2. Да има статистика на броя сваляния.
направих един файл които отваря заявения за сваляне файл, изчита го с fread(), сменя headers с тези на PDF и най отдолу на файла се прави едно инсертване в базата данни. Обаче се появи проблем:
Когато един файл се access-не инсъртванията са две във базата. Според мене това се получава от header() функцията, но немога да намерия начин да я оправя.
Опитах се да сложа слената консктукция:
if($_SESSION[time()] == ""){
something
}
$_SESSION[time()] = time();
ама пак ми вкарва по два записа, моля ако някой се е борил с такъв проблем да ми пише незабавно, че положението е много напечено!
10x
Имам сериозен проблем:
Имам сите които има списък с файлове и съответно тези файлове могат да се свалят. Въпросът обаче е че има две рестрикции:
1. Файловете да са защитени
2. Да има статистика на броя сваляния.
направих един файл които отваря заявения за сваляне файл, изчита го с fread(), сменя headers с тези на PDF и най отдолу на файла се прави едно инсертване в базата данни. Обаче се появи проблем:
Когато един файл се access-не инсъртванията са две във базата. Според мене това се получава от header() функцията, но немога да намерия начин да я оправя.
Опитах се да сложа слената консктукция:
if($_SESSION[time()] == ""){
something
}
$_SESSION[time()] = time();
ама пак ми вкарва по два записа, моля ако някой се е борил с такъв проблем да ми пише незабавно, че положението е много напечено!
10x
Re: Session and insert into DB
В отговор на:направих един файл които отваря заявения за сваляне файл, изчита го с fread(),
по това което съм чел е по-добре да се използва file_get_contents, която дава повече сигурност.
За да помогнем за двойното инсертване paste-ни малко код де. По какво да познаем какво как и къде инсертваш.
Е тук нищо няма:[линк]
Re: Session and insert into DB
Рошав,
ако влезнеш в ICQ-то ще ти кажа повече подвобности.
Н.Чанков
ако влезнеш в ICQ-то ще ти кажа повече подвобности.
Н.Чанков
Re: Session and insert into DB
Ами щото имах същия проблем с PDF-и. Acrobat Reader-а ми правеше не две, а три заявки за един файл и в базата се записваха три тегления.
Изхитрих се да проверявам времето между трите тегления - ако е примерно до 10 сек. в рамките на същата сесия и същия файл (и файлът е PDF), значи просто записвам един запис вместо три.
Изхитрих се да проверявам времето между трите тегления - ако е примерно до 10 сек. в рамките на същата сесия и същия файл (и файлът е PDF), значи просто записвам един запис вместо три.
Re: Session and insert into DB
В такъв случай, би могло да се пусне:
Content-type: application/octet-stream
И акробатът няма и да разбере.
Everything louder than everything else...
Content-type: application/octet-stream
И акробатът няма и да разбере.
Everything louder than everything else...
Re: Session and insert into DB
Акробата не се ли опитва бързо да покаже началото на документа и останалото го дърпа когато решиш да го гледаш? Много дразни като почне да точи, след като ударя PageDown.
Тоя номер с няколкото заявки не може ли да се оправи с някаква бисквида?
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Тоя номер с няколкото заявки не може ли да се оправи с някаква бисквида?
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck
Re: Session and insert into DB
Не си спомням вече, но май с octet-stream бях пробвал и пак не стана. Reader-а явно си детектваше формата и си го дърпаше като PDF.
Re: Session and insert into DB
Май така прави - гледа да изкара първата страница, останалите когато ги поискаш. Ама и на PDF-и от една страница го правеше същия номер.
С бисквити не съм пробвал, пък и вече тоя проект го оте.ах
С бисквити не съм пробвал, пък и вече тоя проект го оте.ах
Re: Session and insert into DB
Гледайте как го реших проблема:
направих един if със следното съдържание:
if(!isset($_GET[show])){ //в началото влиза тука
//вмъкни в базата лог-а, че е отворен PDF-а и с един header
header("Location:?id=".$_GET['id']."&show=1");
//прехвърлям страницата в горният if.
} else {
//дърпай от базата името на PDF-а, и го показвай
}
Тъй като header-а директно препраща /а не с JavaScript/ то при натискане на Back бутона браузера ми се връща при списъка с файлове, а не там където се записва log-a е това е решението и работи.
Айде лека и доходна!
направих един if със следното съдържание:
if(!isset($_GET[show])){ //в началото влиза тука
//вмъкни в базата лог-а, че е отворен PDF-а и с един header
header("Location:?id=".$_GET['id']."&show=1");
//прехвърлям страницата в горният if.
} else {
//дърпай от базата името на PDF-а, и го показвай
}
Тъй като header-а директно препраща /а не с JavaScript/ то при натискане на Back бутона браузера ми се връща при списъка с файлове, а не там където се записва log-a е това е решението и работи.
Айде лека и доходна!
Re: Session and insert into DB
В отговор на:С бисквити не съм пробвал, пък и вече тоя проект го оте.ах
Аз се бях сблъсквал с нещо подобно - скрипт дето праща файлове ( че и големи ) за даунлоуд. С всичките си му partial content-и и глупости. Чудех се обаче как да разбера, че клиента е получил целия файл и да му резна достъпа. Че и бисквити не исках да ползвам щото ме беше страх, че ще има мрънкания от вида "ползвам тука някакъв privacy плъгин на браузъра и не мога да даунлоудвам". Последно го оставих с период на свободно точене от около седмица и после... кръц.
--
"Agile is a mindset, not a set of practices, rules, or tools."
Tom Poppendieck