He estado trabajando con un formulario que recoge datos por medio de "pasos" usando el GET.
Estoy trabajando de la siguiente manera:
Código PHP:
$accion = @$_GET["accion"];
switch ($accion) {
case "ver":
ver($id);
break;
case "insertar":
insertar();
break;
Código PHP:
function ver()
{
global $_POST;
global $conn;
$paso = @$_GET["paso"];
//etc etc
if (!isset($paso)) {
// aqui recojo 2 datos con 1 formulario de metodo GET que postea en index.php?accion=ver&dato1=X&dato2=X&paso=1
}
else {
//este else se muestra si el paso=1, osea si ya recogio esos datos que son esenciales y muestra un formulario basado en esos datos
}
Código HTML:
<form enctype="multipart/form-data" action="index.php?accion=insertar" method="post"> --- todos los datos del formulario <input type="hidden" name="valido" value="1"> <input type="submit" name="action" value="Enviar !"></form>
Y luego, la funcion para insertar en SQL es:
Código PHP:
function insertar()
{
global $conn;
global $_POST;
$valido = $_POST["valido"];
if (!isset($valido)) {
echo "no se puede accesar directamente";
}
else
{
$sql = "insert into `............. //toda la consulta aqui
//envia el email aqui etc
echo "Listo, datos agregados";
}
}
Bueno hasta ahora todo me funciona correctamente. Mi problema es el siguiente cuando una persona llena el formulario correctamente y va hacia al "insertar", lo hace correctamente y le muestra el "listo, datos agregados", pero si la persona refresca la pagina ejecuta la consulta otra vez y llena la base de datos y envia el email de confirmacion una y otra vez por todas las veces que refresque la pagina, ya que la consulta usa todos los POST
Como podria evitar esto? Y que la consulta sea ejecutada una sola vez. Y en caso de que la persona refresque la pagina, darle un mensaje de "tus datos ya fueron enviados".
Otra pregunta, consideran ustedes que el metodo que estoy usando para recolectar datos es seguro?
Soy bastante nueva en esto del php y no tengo idea de lo que ando haciendo :D seguramente me he dejado unos errores gravisimos..
PS: No pongo los codigos completos por que tengo un desastre en el codigo sobretodo en el formulario pero espero que sepan entender la idea de como funciona
