Защита от рефреш. Как ?

Centrino

Registered
Здравейте интересува ме как мога да защитя дадена страница от рефреш. Ще се опитам да обясня на кратко какво точно искам. Примерно имам 2 странички. Add.php и Add1.php Add.php ми е форма в която задавам някакви имена където при натискането на бутон събмит ми изпраща в страница Add1.php и в нея се извършва действието и ми вкарва данните които съм въвел във формата в дб-а. Но след като ме препрати на тази страница и аз ако дам 1000 пъти рефреш на страницата 1000 пъти тази информация ще се вкара в дб-а. Как да направя така че дори и да се даде рефреш да не вкарва повторно същата информация в дб-а. Мислих да го направя да проверява дали вече информацията не се съдържа в дб, но не ми върши работа тоя метод. Нещо друго да ви хрумва на вас ? Дано да сте ме разбрали. Благодаря Ви.
 
Centrino каза:
Здравейте интересува ме как мога да защитя дадена страница от рефреш. Ще се опитам да обясня на кратко какво точно искам. Примерно имам 2 странички. Add.php и Add1.php Add.php ми е форма в която задавам някакви имена където при натискането на бутон събмит ми изпраща в страница Add1.php и в нея се извършва действието и ми вкарва данните които съм въвел във формата в дб-а. Но след като ме препрати на тази страница и аз ако дам 1000 пъти рефреш на страницата 1000 пъти тази информация ще се вкара в дб-а. Как да направя така че дори и да се даде рефреш да не вкарва повторно същата информация в дб-а. Мислих да го направя да проверява дали вече информацията не се съдържа в дб, но не ми върши работа тоя метод. Нещо друго да ви хрумва на вас ? Дано да сте ме разбрали. Благодаря Ви.

Няма причина да не ти върши работа. Може да го направиш определено време да неможе да се пуска пак. Според мен комбинацията от 2-те е много добър метод.
 
Хмм явно ще го направя така. Но били ми казал как да определя времето за което да не може да се пуска пак ? Метода ми трябва. Благодаря.
 
Centrino каза:
Хмм явно ще го направя така. Но били ми казал как да определя времето за което да не може да се пуска пак ? Метода ми трябва. Благодаря.

Ами примерно имаш 1 таблица с 2 полета - IP и timestamp. При всяко въвеждане на ново нещо записваш нов ред с IP-то или ако съществува само променяш timestamp полето. В php вадиш часа така $chas = time(); и го записваш в timestamp . При опит за вкарване на нещото правиш 1 проверка нещо такова:

$result = mysql_query("SELECT * FROM `tablicata` WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "');

$check = mysql_fetch_array($result);

$timee = time() - 300;

if ( $check['timestamp'] < $timee )
{
KODA TI ZA DOBAVQNE
}
else
{
GRE6KA - NQMA6 PRAVO DA PUSKA6 NOVO ZA 5 MINUTI
}

300 е време в секинди
 
след като пратиш информацията прати обратно примерно на add.php с header , така като натиснеш рефреш данните не се пазят
 
StormBreaker каза:
Centrino каза:
Хмм явно ще го направя така. Но били ми казал как да определя времето за което да не може да се пуска пак ? Метода ми трябва. Благодаря.

Ами примерно имаш 1 таблица с 2 полета - IP и timestamp. При всяко въвеждане на ново нещо записваш нов ред с IP-то или ако съществува само променяш timestamp полето. В php вадиш часа така $chas = time(); и го записваш в timestamp . При опит за вкарване на нещото правиш 1 проверка нещо такова:

$result = mysql_query("SELECT * FROM `tablicata` WHERE ip = '" . $_SERVER['REMOTE_ADDR'] . "');

$check = mysql_fetch_array($result);

$timee = time() - 300;

if ( $check['timestamp'] < $timee )
{
KODA TI ZA DOBAVQNE
}
else
{
GRE6KA - NQMA6 PRAVO DA PUSKA6 NOVO ZA 5 MINUTI
}

300 е време в секинди


Това ми върши идеална работа и мисля че е най- сигурно. Благодаря. +1
 

Back
Горе