Foros del Web » Programando para Internet » PHP »

Reenvío a zona de web tras envío formulario

Estas en el tema de Reenvío a zona de web tras envío formulario en el foro de PHP en Foros del Web. Hola a todos. He instalado un pequeño y simple formulario en un Joomla!. Funciona bien, y lo mejor es que los mensajes llegan sin ningún ...
  #1 (permalink)  
Antiguo 19/08/2012, 12:28
 
Fecha de Ingreso: noviembre-2005
Mensajes: 868
Antigüedad: 13 años, 9 meses
Puntos: 8
Reenvío a zona de web tras envío formulario

Hola a todos.

He instalado un pequeño y simple formulario en un Joomla!.

Funciona bien, y lo mejor es que los mensajes llegan sin ningún problema.

Lo he colocado en el footer. El problema es que al pulsar el envío se produce una llamada a la url, lo cual hace perder de vista el formulario.

En caso, de error, lo mismo.

Me gustaría hacer una llamada específica a la zona del sitio web donde está el formulario, al estilo ancla al principio del mismo (<a name="anclaje"></a>) para que cuando alguien lo opere no vaya a la página desde donde haya enviado el formulario, sino a
al footer de la misma, como con el ejemplo del ancha, que sería:

http://www.myweb.com/categoria/articulo.php#anclaje

En el caso de que enviara el formulario desde el artículo en esa "categoría".

El código de llamada del sitio, creo que está aquí:



if ($fixed_url) {
$url = $myFixedURL;
}
else {
if (!$exact_url) {
$url = JURI::current();
}
else {
if (!$disable_https) {
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
else {
$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
}
}



y agradecería que me pudieseis orientar al respecto.

Un saludo.
  #2 (permalink)  
Antiguo 29/08/2012, 12:02
 
Fecha de Ingreso: noviembre-2005
Mensajes: 868
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Reenvío a zona de web tras envío formulario

Hola.

En relación al tema expuesto, he encontrado estas dos posibles soluciones para redireccionar después de enviar el formulario:

print('<META HTTP-EQUIV="Refresh" CONTENT=10; URL=pagina-de-destino.php >');

y

header("location:pagina-de-destino.php");

Por más que sigo las indicaciones en tutoriales, no consigo que me funcione.

El código completo está abajo, y os agradecería que me ayudaseis a la hora de localizar dónde debo introducir uno de estos dos elementos.

Gracias.

Código:

Cita:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
$document =& JFactory::getDocument();
$document->addStyleSheet(JURI::root() . 'modules/formulario_contacto/css/style.css');

//Email Parameters
$recipient = $params->get('email_recipient', '');
$fromName = @$params->get('from_name');
$fromEmail = @$params->get('from_email', '[email protected]');

// Text Parameters
$myNameLabel = $params->get('name_label', 'Name:');
$myEmailLabel = $params->get('email_label', 'Email:');
$myTelephoneLabel = $params->get('telephone_label', 'Telephone:');
$mySubjectLabel = $params->get('subject_label', 'Subject:');
$myMessageLabel = $params->get('message_label', 'Message:');
$buttonText = $params->get('button_text', 'Send Message');
$pageText = $params->get('page_text', 'Thank you for your contact.');
$errorText = $params->get('error_text', 'Your message could not be sent. Please try again.');
$noEmail = $params->get('no_email', 'Please write your email');
$invalidEmail = $params->get('invalid_email', 'Please write a valid email');
$pre_text = $params->get('pre_text', '');

// Size and Color Parameters
$label_pos = $params->get('label_pos', '0');

// URL Parameters
$exact_url = $params->get('exact_url', true);
$disable_https = $params->get('disable_https', true);
$fixed_url = $params->get('fixed_url', true);
$myFixedURL = $params->get('fixed_url_address', '');

// Module Class Suffix Parameter
$mod_class_suffix = $params->get('moduleclass_sfx', '');


if ($fixed_url) {
$url = $myFixedURL;
}
else {
if (!$exact_url) {
$url = JURI::current();
}
else {
if (!$disable_https) {
$url = (!empty($_SERVER['HTTPS'])) ? "https://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] : "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
else {
$url = "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'];
}
}
}

$url = htmlentities($url, ENT_COMPAT, "UTF-8");

$myError = '';
$CORRECT_NAME = '';
$CORRECT_EMAIL = '';
$CORRECT_SUBJECT = '';
$CORRECT_MESSAGE = '';

if (isset($_POST["rp_email"])) {
$CORRECT_SUBJECT = htmlentities($_POST["rp_subject"], ENT_COMPAT, "UTF-8");
$CORRECT_MESSAGE = htmlentities($_POST["rp_message"], ENT_COMPAT, "UTF-8");
$CORRECT_NAME = htmlentities($_POST["rp_name"], ENT_COMPAT, "UTF-8");

// check email
if ($_POST["rp_email"] === "") {
$myError = '<div class="pop-up">' . '<p>' . $noEmail . '</p>' . '</div>';
}
if (!preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/", strtolower($_POST["rp_email"]))) {
$myError = '<div class="pop-up">' . '<p>' . $invalidEmail . '</p>' . '</div>';
}
else {
$CORRECT_EMAIL = htmlentities($_POST["rp_email"], ENT_COMPAT, "UTF-8");
}

if ($myError == '') {
$mySubject = $_POST["rp_subject"];
$myMessage = 'Remitente: '. $_POST["rp_name"] ."\n\n" . 'E-Mail: '. $_POST["rp_email"] ."\n\n". 'Telf.: '. $_POST["rp_telephone"] ."\n\n". $_POST["rp_message"];

$mailSender = &JFactory::getMailer();
$mailSender->addRecipient($recipient);

$mailSender->setSender(array($fromEmail,$fromName));
$mailSender->addReplyTo(array( $_POST["rp_email"], '' ));

$mailSender->setSubject($mySubject);
$mailSender->setBody($myMessage);


if ($mailSender->Send() !== true) {
$myReplacement = '<div class="pop-up">' . '<p>' . $errorText . '</p>' . '</div>';
print $myReplacement;
return true;
}
else {
$myReplacement = '<div class="pop-up">' . '<p>' . $pageText . '</p>' . '</div>';
print $myReplacement;
}

}
} // end if posted

// check recipient
if ($recipient === "") {
$myReplacement = '<div class="pop-up">' . '<p>No se ha especificado destinatario</p>' . '</div>';
print $myReplacement;
return true;
}

print '<style type="text/css"><!--' . $addcss . '--></style>';
print '<div class="rapid_contact ' . $mod_class_suffix . '"><form action="' . $url . '" method="post">' . "\n" .
'<div class="rapid_contact intro_text ' . $mod_class_suffix . '">'.$pre_text.'</div>' . "\n";

if ($myError != '') {
print $myError;
}

print '<div id="forminfe">';

// print name input
print '<div class="forminfe">' . '<label for="name">' . $myNameLabel . '</label>' . '<input class="rapid_contact inputbox ' . $mod_class_suffix . '" type="text" name="rp_name" size="' . '" value="'.$CORRECT_NAME.'"/></div>' . "\n";
// print email input
print '<div class="forminfe">' . '<label for="email">' . $myEmailLabel . '</label>' . '<input class="rapid_contact inputbox ' . $mod_class_suffix . '" type="text" name="rp_email" value="'.$CORRECT_EMAIL.'"/></div>' . "\n";
// print name input
print '<div class="forminfe">' . '<label for="telephone">' . $myTelephoneLabel . '</label>' . '<input class="rapid_contact inputbox ' . $mod_class_suffix . '" type="text" name="rp_telephone"' . '"/></div>' . "\n";
// print subject input
print '<div class="forminfe">' . '<label for="name">' . $mySubjectLabel . '</label>' . '<input class="rapid_contact inputbox ' . $mod_class_suffix . '" type="text" name="rp_subject"' . '" value="'.$CORRECT_SUBJECT.'"/></div>' . "\n";
// print message input
print '<div class="forminfe">' . '<label for="mensaje">' . $myMessageLabel . '</label>' . '<textarea class="rapid_contact textarea ' . $mod_class_suffix . '" name="rp_message"' . '" rows="4">'.$CORRECT_MESSAGE.'</textarea></div>' . "\n";

// print button
print '<div class="forminfe"><input class="rapid_contact button ' . $mod_class_suffix . '" type="submit" value="' . $buttonText . '"/></div></div></form></div>' . "\n";
return true;
  #3 (permalink)  
Antiguo 29/08/2012, 18:01
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 9 años, 9 meses
Puntos: 168
Respuesta: Reenvío a zona de web tras envío formulario

no veo ningun header ni algun meta http-equiv
  #4 (permalink)  
Antiguo 30/08/2012, 02:34
 
Fecha de Ingreso: noviembre-2005
Mensajes: 868
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Reenvío a zona de web tras envío formulario

Este código es parte de un módulo de formulario.

¿Me puedes decir dónde están esos elementos?
  #5 (permalink)  
Antiguo 03/09/2012, 08:48
 
Fecha de Ingreso: noviembre-2005
Mensajes: 868
Antigüedad: 13 años, 9 meses
Puntos: 8
Respuesta: Reenvío a zona de web tras envío formulario

Ya lo he solucionado, para el que le interese y ande buscando lo mismo.

Se inserta esto

$url = 'http://www.lapaginaweb.com';
echo '<META HTTP-EQUIV=Refresh CONTENT="0; URL='.$url.'">';

y listo.

Un saludo y gracias.

Etiquetas: formulario, tras, zonas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:48.