Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: При обновлении запрос снова отправляется
 
 автор: Belkin   (01.11.2011 в 23:01)   письмо автору
 
 

Есть index.php - главная страница, где находится форма:

<?php

    
include 'mysql.php';
    
    echo
'
        <html>
        <head>
          <title>Загрузка файлов на сервер</title>
        </head>
        <body>
        '
;
        
    echo
'  
        <form action="download.php" method="post" enctype="multipart/form-data">
            Ваша новость:<br />
            <textarea type="text" name="text" style="width: 500px;height: 200px;" onchange="if (this.value.length > 1) {submit.disabled = false;} else {submit.disabled = true;}"></textarea><br />
            Ваша фотография:<br />
            <input type="file" name="file"/><br /> 
            <input type="submit" name="submit" value="Отправить" disabled="disabled"/> 
        </form>
        '
;
        
    echo
'
        </body>
        </html>
        '
;

?>

Есть обработчик download.php:

<?php
    
    
include 'mysql.php';
    
    if(
$_POST['submit'])
    {
        
// Проверяем размер файла
        
if($_FILES["file"]["size"] > 1024*100*1024)
        {
            echo (
"Размер файла превышает 100 mb!");
            exit;
        }
        
// Проверяем загружен ли файл
        
if(is_uploaded_file($_FILES["file"]["tmp_name"]))
        {   
            
// Задаем допустимые расширения файлов
            
$extension_array = array(
                                    
'gif',
                                    
'jpg',
                                    
'jpeg',
                                    
'png',
                                    
'3gp',
                                    
'avi',
                                    
'flv'
                                    
);
            
$pathinfo pathinfo($_FILES["file"]["name"]);
            if (
in_array($pathinfo['extension'], $extension_array)) 
            {   
                
// Переносим загруженый файл в папку, куда должны загружаться файлы
                
move_uploaded_file($_FILES["file"]["tmp_name"], "./files/".$_FILES["filename"]["name"]);
                
$sql "INSERT INTO vk1 (text, date) VALUES ('".$_POST['text']."', NOW())";
                
mysql_query($sql);
                echo 
'Загрузили! :)';
                echo 
"       
                     <script>
                         var a = 'document.location.href = \"index.php\"';
                         setTimeout(a, 1500)
                     </script>
                     "
;
            }
            else 
            {
                echo (
'Не тот формат');
                exit;
            }
        }
        else
        {
            echo(
"Ошибка загрузки файла");
        }  
    }

?>


Значит так, когда я отправил файл и сообщение, выдается сообщение - "Загрузили! :)", то есть уведомляет, что загрузка прошла успешно ) А проблема в том, что если нажать обновить, то запрос заново отправится в БД и так сколько хочешь клацай ) Вот попробовал сделать на JS, чтобы когда написало "Загрузили! :)", то через 1.5 секунд перенаправляло на index.php, но все-таки - это не выход же.. есть какой способ сделать проверку повторной отправки или что-то такое? )

  Ответить  
 
 автор: sl1p   (01.11.2011 в 23:05)   письмо автору
 
   для: Belkin   (01.11.2011 в 23:01)
 

<?
// form
/*
вместо
echo "       
                     <script>
                         var a = 'document.location.href = \"index.php\"';
                         setTimeout(a, 1500)
                     </script>
                     "; 
*/
header('Location: index.php?done=1');

<?
// index.php
if(isset($_GET['done'])) {
    echo 
'Загрузили :)';
}

  Ответить  
 
 автор: Belkin   (01.11.2011 в 23:09)   письмо автору
 
   для: sl1p   (01.11.2011 в 23:05)
 

спасибо Вам большое )

а вот вопрос маленький, нельзя "?done=1" скрыть через .htaccess ? и если да, то как?

  Ответить  
 
 автор: Красная_шляпа   (01.11.2011 в 23:18)   письмо автору
 
   для: Belkin   (01.11.2011 в 23:09)
 

никак

  Ответить  
 
 автор: sl1p   (01.11.2011 в 23:21)   письмо автору
 
   для: Belkin   (01.11.2011 в 23:09)
 

<?
// form
session_start();
$_SESSION['done'] = 1;
header('Location: index.php?done=1');


<?
// index.php
session_start();
if(isset(
$_SESSION['done'])) {
    unset(
$_SESSION['done']);
    echo 
'Загрузили :)';

  Ответить  
 
 автор: Красная_шляпа   (01.11.2011 в 23:23)   письмо автору
 
   для: sl1p   (01.11.2011 в 23:21)
 

он просил через хтааксес

  Ответить  
 
 автор: Belkin   (01.11.2011 в 23:25)   письмо автору
 
   для: Красная_шляпа   (01.11.2011 в 23:23)
 

тоже подошло, просто мне нужно было, чтобы в ручную не ввели это и не появилась надпись - "Загрузили :)" просто так) Жаль, что скрыть нельзя совсем, спасибо еще раз.

  Ответить  
 
 автор: sl1p   (01.11.2011 в 23:51)   письмо автору
 
   для: Belkin   (01.11.2011 в 23:25)
 

втыкнул, скрыть можно:

<?
// form
session_start();
$_SESSION['done'] = 1;
header('Location: index.php');



<?
// index.php
session_start();
if(isset(
$_SESSION['done'])) {
    unset(
$_SESSION['done']);
    echo 
'Загрузили :)';
}  

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования