Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2013, 17:33   #1
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию повтор POST запроса

как избавиться от повторной отправки пост запроса при обновлении страницы?
Погуглив, нашел использование
PHP код:
header('Location : /index.php'); 
но не могу понять как его использовать
PHP код:
<form name="upload" action=" index.php" method="POST" ENCTYPE="multipart/form-data">
                
                  <input type="file" name="userfile" > 
                  
                  <input type="submit" name="upload" value="dowanload"> 
                </form>

                <?php
                
include("login.php");
                if (!empty(
$_FILES['userfile']['tmp_name']))
                {
                
$uploaddir'uploads/'
                
$apend=rand(1,999).'.jpg' ;
                
$uploadfile "$uploaddir$apend";             
                
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                
//echo " $apend <br> <img src='$uploadfile'/>"; 
                
$strSQL "INSERT INTO general(name) VALUES('$uploadfile')"
                
mysql_query($strSQL) or die(mysql_error());
                }    
                
?>
Ekzamenator вне форума Ответить с цитированием
Старый 23.12.2013, 18:29   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Обработчик вынеси в отдельный файл.
После обработки данных – выполняй редирект при помощи header.
Andkorol вне форума Ответить с цитированием
Старый 23.12.2013, 18:53   #3
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию

все верно?

index.php
PHP код:
<?php
        
include("login.php");
        include(
"otpravka.php");
        
header('Location :index.php');
    
?>
otpravka.php
PHP код:
<?
if (!empty($_FILES['userfile']['tmp_name']))
                {
                
$uploaddir'uploads/'
                
$apend=rand(1,999).'.jpg' ;
                
$uploadfile "$uploaddir$apend";             
                
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                
//echo " $apend <br> <img src='$uploadfile'/>"; 
                
$strSQL "INSERT INTO general(name) VALUES('$uploadfile')"
                
mysql_query($strSQL) or die(mysql_error());
                }
                
?>
Ekzamenator вне форума Ответить с цитированием
Старый 23.12.2013, 19:22   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Нет.
header в обработчике должен быть, а не в index.php.
Данные из формы обработали – и выполнили редирект куда нужно.
Andkorol вне форума Ответить с цитированием
Старый 23.12.2013, 19:29   #5
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию

что означает эта ошибка?
Warning: Cannot modify header information - headers already sent by (output started at Z:\home\localhost\www\index.php:15) in Z:\home\localhost\www\otpravka.php on line 12

index.php
PHP код:
<?php
                
include("login.php");
                include(
"otpravka.php");                
                
?>
otpravka.php
PHP код:
<?
if (!empty($_FILES['userfile']['tmp_name']))
                {
                
$uploaddir'uploads/'
                
$apend=rand(1,999).'.jpg' ;
                
$uploadfile "$uploaddir$apend";             
                
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                
//echo " $apend <br> <img src='$uploadfile'/>"; 
                
$strSQL "INSERT INTO general(name) VALUES('$uploadfile')"
                
mysql_query($strSQL) or die(mysql_error());
                }
                
header('Location :index.php');
                
?>
Ekzamenator вне форума Ответить с цитированием
Старый 23.12.2013, 19:44   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

http://phpfaq.ru/headers
Andkorol вне форума Ответить с цитированием
Старый 23.12.2013, 20:05   #7
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию

Я уже все перепробовал, исправь пожалуйста ошибку в коде, я уже не знаю, что я делаю не так....
index.php
PHP код:
<!DOCTYPE html>
<html>
<head>
<title>Ste</title>
<meta http-equiv=Refresh content="text/html; charset=Cyrillic-1251">

<link rel="stylesheet" href="default.css" type="text/css" media="screen" />
<link rel="stylesheet" href="nivo-slider.css" type="text/css" media="screen" />
<link rel="stylesheet" href="st.css" type="text/css" media="screen" />
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
    <div class="Block">
                    <div class="logo" >
                    <img src="/images/logo.png"/>                    
                    </div>
        <div class="BlockMenu">

                        <div class="navigation">                        
                            <a href="index.php">Главная</a>
                            <a href="news.php">Новости</a>
                            <a href="menu.php">Меню</a>
                            <a href="akcii.php">Акции</a>
                            <a href="contacts.php">Контакты</a>                        
                        </div>
        </div>
    <div class="slider-wrapper theme-default">
                    <div class="forma">
                    <?php 
                            
include("otpravka.php");
                            include(
"login.php");
                    
?>
    

                <form name="upload" action="index.php" method="POST" ENCTYPE="multipart/form-data">
                
                <input type="file" name="userfile" > 
                  
                <input type="submit" name="upload" value="dowanload"> 
                </form>
                    </div>
                    <div id="slider" class="nivoSlider"> 
                        <?    
                        $query
="SELECT * FROM general ORDER BY  `id` DESC limit 3"
                        
$result=mysql_query($query)or die("Ошибка запроса MYSQL"); 
                        if (
mysql_num_rows($result)>0){ 
                        while (
$row mysql_fetch_assoc($result)){  
                                            
                        
printf('
                        <img src="%s" />                                           
                        '
,$row['name']);     
                        }}                                                     
                        
?>
        </div>
                <script type="text/javascript" src="scripts/jquery-1.9.0.min.js"></script>
                <script type="text/javascript" src="scripts/jquery.nivo.slider.js"></script>
                <script type="text/javascript">
                $(window).load(function() {
                $('#slider').nivoSlider();
                });
                </script>
                
    </div>

<div style="clear:both;"></div>    
<body/>
</html>
otpravka.php

PHP код:
<?
if (!empty($_FILES['userfile']['tmp_name']))
                {
                
$uploaddir'uploads/'
                
$apend=rand(1,999).'.jpg' ;
                
$uploadfile "$uploaddir$apend";             
                
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                
//echo " $apend <br> <img src='$uploadfile'/>"; 
                
$strSQL "INSERT INTO general(name) VALUES('$uploadfile')"
                
mysql_query($strSQL) or die(mysql_error());
                }
                
header('Location :index.php');
                
?>

Последний раз редактировалось Ekzamenator; 23.12.2013 в 20:09.
Ekzamenator вне форума Ответить с цитированием
Старый 23.12.2013, 20:43   #8
djedai
Пользователь
 
Регистрация: 29.11.2010
Сообщений: 20
По умолчанию

Файл отправка не подключай. В index.php в форме ссылайся на него action="отправка.php"! А ошибка часто тебя встречать будет,header надо писать до вывода на экран заголовков. У тебя ты текст выводишь!
djedai вне форума Ответить с цитированием
Старый 24.12.2013, 18:51   #9
Ekzamenator
Пользователь
 
Регистрация: 15.04.2011
Сообщений: 61
По умолчанию

все верно ?
PHP код:
<div class="slider-wrapper theme-default">
                <div class="forma">
                    
    

                <form name="upload" action="otpravka.php" method="POST" ENCTYPE="multipart/form-data">
                
                <input type="file" name="userfile" > 
                  
                <input type="submit" name="upload" value="dowanload"> 
                </form>
                    </div>
                    <div id="slider" class="nivoSlider"> 
                        <?    
                        $query
="SELECT * FROM general ORDER BY  `id` DESC limit 3"
                        
$result=mysql_query($query)or die("Ошибка запроса MYSQL"); 
                        if (
mysql_num_rows($result)>0){ 
                        while (
$row mysql_fetch_assoc($result)){  
                                            
                        
printf('
                        <img src="%s" />                                           
                        '
,$row['name']);     
                        }}                                                     
                        
?>
        </div>
PHP код:
<?
header
('Location : /index.php');
include(
"login.php");
if (!empty(
$_FILES['userfile']['tmp_name']))
                {
                
$uploaddir'uploads/'
                
$apend=rand(1,999).'.jpg' ;
                
$uploadfile "$uploaddir$apend";             
                
move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile);
                
//echo " $apend <br> <img src='$uploadfile'/>"; 
                
$strSQL "INSERT INTO general(name) VALUES('$uploadfile')"
                
mysql_query($strSQL) or die(mysql_error());
                }

                
?>
а то что меня не направляет обратно на index.php, так и должно быть?
Ekzamenator вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отправка post запроса drakonbc C# (си шарп) 1 24.07.2013 01:12
Ошибка POST запроса Vnlexa Работа с сетью в Delphi 4 17.09.2012 20:48
Отправка post-запроса С# galogen13 C# (си шарп) 3 23.04.2012 15:46
Отправка post-запроса С# galogen13 Помощь студентам 3 22.04.2012 03:20
Ответ POST запроса... HTL Работа с сетью в Delphi 1 31.07.2009 12:12