Upload форма

strasburg

Registered
Имам една upload форма с параметър action="upload.php". Всичко е точно, но след като се изпрати заявката и пренасочи към upload.php, ако се даде refresh на страницата файла се качва наново и наново и наново. Така ако някой реши набързо може да ми напълни дисковото пространство от злоба.

Та въпроса ми е как мога да избегна този вид СПАМ без добавяне на каптча код? С някакви сесийки може би?
 
Прави една проверка дали този файл дето искаш да качиш вече не съществува.
PHP:
<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?>
 
Др вариант е при успешно качен файл да направиш бисквитка
setcookie("isuploaded", 'yes', 900);


А преди алгоритъма ти за качване правиш :



if($_COOKIE['isuploaded'] == yes )
{

echo " Моля опитайте пак след 15 минути.";
exit(0);
}
 
index точно това ми трябваше, но забелязвам, че не създава бисквитка. И докато се ровя из гугъл за да намеря решение, ти ако си тук може да ме светнеш от къде идва проблема. :)

Edit: предположих, че може да е, защото не съм добавил ob_start(); ама уви....
 
Реално си създава бисквитка, обаче проблема идва там ,че грешно съм задал данните
setcookie("isuploaded", 'yes', time()+900);

Така би трябвало да работи.

Времето се измерва в секунди от създаването на Unix. 900 секунда се падат първите 15 минути от неговото съществуване, което е било много много отдавна. Идеята е към сегашното време да се добавят още 15 минути и след това сама да се унищожи. Предполагам, че всичко вече е наред :)
 
index каза:
Реално си създава бисквитка, обаче проблема идва там ,че грешно съм задал данните
setcookie("isuploaded", 'yes', time()+900);

Така би трябвало да работи.

Времето се измерва в секунди от създаването на Unix. 900 секунда се падат първите 15 минути от неговото съществуване, което е било много много отдавна. Идеята е към сегашното време да се добавят още 15 минути и след това сама да се унищожи. Предполагам, че всичко вече е наред :)

Забелязах аз, че грешно си дал примера и си го поправих. Но пак не създава бисквитката. Като се разровя в браузъра за бисквитките, намирам всички, но не и моята....

Извод:
Не създава бисквитка, но не мога да разбера защо.
 
Целият код няма как да ти го дам, но схемата е следната:
След всички проверки следва else { и след move_uploaded_file .... добавям
setcookie("sad", "yes", time()+3600); (времето е примерно, ще го редактирам после) }

И при проверките слагам следното:

if ($_COOKIE['sad'] == 'yes') {
echo "neshto si";
}

и това е, би трябвало да работи, но не създава бисквитка и съответно от проверката няма файда....
 
Как е търсиш ? Ако си е създал през localhost, търси е през localhost. През 127.0.0.1 няма да стане.

Също така имаш ли пуснат session_start(); в началото на файла ?
 
eddyy93 каза:
Как е търсиш ? Ако си е създал през localhost, търси е през localhost. През 127.0.0.1 няма да стане.

Също така имаш ли пуснат session_start(); в началото на файла ?

session_start нямах, но сложих и пак ефекта е нулев. имам и ob_start.

Резултата от print-а е:



Array ( [__utma] => 138692651.1251297493.1315658502.1315658502.1315658502.1 [__utmz] => 138692651.1315658502.1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none) )
 
Я сложи в един оделен файл ето това и го стартирай 1 - 2 пути:

PHP:
<?php
session_start();



if($_COOKIE['test'])
{
echo 'Бисквитката ви е създадена';
}
else {
setcookie("test", 'yes', time()+900, '/');
}

?>
 
eddyy93 каза:
Я сложи в един оделен файл ето това и го стартирай 1 - 2 пути:

PHP:
<?php
session_start();



if($_COOKIE['test'])
{
echo 'Бисквитката ви е създадена';
}
else {
setcookie("test", 'yes', time()+900, '/');
}

?>

Ами да, това работи и ми създаде бисквитка, следователно проблема не е някъде из хоста...
 
Преди да ти създаде бисквитката явно минава някъква if проверка, явно тя е грешна и не позволява да се създаде бисквитката.

Дай на index точката, той каза за бисквитката : ))
 
Пробвах и следното:

Сложих setcookie най-горе във upload.php и пак не създава бисквитка, не мога да разбера какъв му е проблема.... :eek: :eek: :eek: :eek: :eek:
 
И проблема в край на сметка се оказа, че session_start и ob_start не бяха сложени наааайййй-горе на файла със собствени отварящи и затварящи тагове <?php ?>

Бре, че са капризни, пробвах да ги сложа най-отгоре, ама искали и собствен php таг да им сложиш....
 

Горе