wp_insert_post - Actualización de PHP
wp_insert_post tax_input (6)
Si la página se actualizó, esperaría que dos solicitudes seguidas para la misma URL (ruta, nombre de archivo, cadena de consulta) y el mismo contenido del formulario (si lo hubiera) (datos POST). Esto podría ser una gran cantidad de datos, por lo que puede ser mejor hacerlo. Asi que ...
<?php
session_start();
//The second parameter on print_r returns the result to a variable rather than displaying it
$RequestSignature = md5($_SERVER[''REQUEST_URI''].$_SERVER[''QUERY_STRING''].print_r($_POST, true));
if ($_SESSION[''LastRequest''] == $RequestSignature)
{
echo ''This is a refresh.'';
}
else
{
echo ''This is a new request.'';
$_SESSION[''LastRequest''] = $RequestSignature;
}
En una situación AJAX, debe tener cuidado con los archivos en los que inserta este código para no actualizar la firma LastRequest para los scripts que se llamaron de manera asincrónica.
Quiero detectar si el navegador se actualiza o no usando PHP, y si el navegador se actualiza, qué código PHP particular se debe ejecutar. Por favor, ayúdame. Cualquier fragmento de código es muy útil.
Gracias por adelantado,
saludos a Naveen
Si quiere decir que quiere distinguir entre cuando un usuario llega a la página desde el momento en que recarga la página, consulte la referencia. En php es: $ _SERVER ["HTTP_REFERER"]. Vea si es igual a la página en la que se ejecuta su secuencia de comandos. Puede ser que el cliente no proporcione esta información; si eso ocurre, podría establecer una cookie o variable de sesión para rastrear la última página solicitada.
<?php
session_start();
if (!isset($_SESSION["visits"]))
$_SESSION["visits"] = 0;
$_SESSION["visits"] = $_SESSION["visits"] + 1;
if ($_SESSION["visits"] > 1)
{
echo "You hit the refresh button!";
}
else
{
echo "This is my site";
}
// To clear out the visits session var:
// unset($_SESSION["visits"]);
?>
Para evitar el procesamiento de formularios duplicados cuando un usuario pulsa el botón de actualización o retroceso del navegador, debe utilizar una variable de sesión de id. De instancia de página y una entrada de formulario oculta que contenga esa variable. cuando los dos no coinciden, el usuario ha actualizado la página y no debe volver a procesar el formulario. para más detalles, ver:
Cuando el usuario pulsa el botón Actualizar, el navegador incluye un encabezado adicional que aparece en la matriz $ _SERVER.
Pruebe el botón de actualización usando lo siguiente:
$refreshButtonPressed = isset($_SERVER[''HTTP_CACHE_CONTROL'']) &&
$_SERVER[''HTTP_CACHE_CONTROL''] === ''max-age=0'';
Si alguien actualiza una página, se enviará la misma solicitud que la anterior. Por lo tanto, debe verificar si la solicitud actual es la misma que la última. Esto puede hacerse de la siguiente manera:
session_start();
$pageRefreshed = false;
if (isset($_SESSION[''LAST_REQUEST'']) && $_SERVER[''REQUEST_URI''] === $_SESSION[''LAST_REQUEST''][''REQUEST_URI'']) {
if (isset($_SERVER[''HTTP_REFERER''])) {
// check if the last request’s referrer is the same as the current
$pageRefreshed = $_SERVER[''HTTP_REFERER''] === $_SESSION[''LAST_REQUEST''][''HTTP_REFERER''];
} else {
// check if the last request didn’t have a referrer either
$pageRefreshed = $_SERVER[''HTTP_REFERER''] === null;
}
}
// set current request as "last request"
$_SERVER[''LAST_REQUEST''] = array(
''REQUEST_URI'' => $_SERVER[''REQUEST_URI''],
''HTTP_REFERER'' => isset($_SERVER[''HTTP_REFERER'']) ? $_SERVER[''HTTP_REFERER''] : null
);
No lo he probado, pero debería funcionar.