Foros del Web » Programando para Internet » PHP »

Necesito ayuda con Formulario.

Estas en el tema de Necesito ayuda con Formulario. en el foro de PHP en Foros del Web. Tengo este formulario, WP-ContactForm enparte compuesto por este codigo Este que pertenece a las opciones de administración. Código PHP: <?php /* Description: Opciones de administracion para WP-ContactForm */ load_plugin_textdomain ( ...
  #1 (permalink)  
Antiguo 24/06/2007, 12:57
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 20 años, 8 meses
Puntos: 5
Necesito ayuda con Formulario.

Tengo este formulario, WP-ContactForm enparte compuesto por este codigo

Este que pertenece a las opciones de administración.

Código PHP:
<?php
/*
Description: Opciones de administracion para WP-ContactForm
*/

load_plugin_textdomain('wpcf',$path = 'wp-content/plugins/wp-contact-form');
$location = get_option('siteurl') . '/wp-admin/admin.php?page=wp-contact-form/options-contactform.php'; // Form Action URI

/*Lets add some default options if they don't exist*/
add_option('wpcf_email', __('[email protected]', 'wpcf'));
add_option('wpcf_subject', __('Comentario del blog', 'wpcf'));
add_option('wpcf_success_msg', __('Gracias por tu comentario!', 'wpcf'));
add_option('wpcf_error_msg', __('Por favor complete todos los campos requeridos.', 'wpcf'));
add_option('wpcf_show_quicktag', TRUE);

/*check form submission and update options*/
if ('process' == $_POST['stage'])
{
update_option('wpcf_email', $_POST['wpcf_email']);
update_option('wpcf_subject', $_POST['wpcf_subject']);
update_option('wpcf_success_msg', $_POST['wpcf_success_msg']);
update_option('wpcf_error_msg', $_POST['wpcf_error_msg']);

if(isset(
$_POST['wpcf_show_quicktag'])) // If wpcf_show_quicktag is checked
    
{update_option('wpcf_show_quicktag', true);}
    else {
update_option('wpcf_show_quicktag', false);}

}

/*Get options for form fields*/
$wpcf_email = stripslashes(get_option('wpcf_email'));
$wpcf_subject = stripslashes(get_option('wpcf_subject'));
$wpcf_success_msg = stripslashes(get_option('wpcf_success_msg'));
$wpcf_error_msg = stripslashes(get_option('wpcf_error_msg'));
$wpcf_show_quicktag = get_option('wpcf_show_quicktag');
?>

<div class="wrap">
  <h2><?php _e('Formulario de Contacto, Opciones', 'wpcf') ?></h2>
  <form name="form1" method="post" action="<?php echo $location ?>&amp;updated=true">
    <input type="hidden" name="stage" value="process" />
    <table width="100%" cellspacing="2" cellpadding="5" class="editform">
      <tr valign="top">
        <th scope="row"><?php _e('Dirección, E-mail:') ?></th>
        <td><input name="wpcf_email" type="text" id="wpcf_email" value="<?php echo $wpcf_email; ?>" size="40" />
        <br />
<?php _e('Esta es la direccion a la que se le enviara el email.', 'wpcf') ?></td>
      </tr>
      <tr valign="top">
        <th scope="row"><?php _e('Asunto:') ?></th>
        <td><input name="wpcf_subject" type="text" id="wpcf_subject" value="<?php echo $wpcf_subject; ?>" size="50" />
        <br />
<?php _e('Este sera el asunto del email.', 'wpcf') ?></td>
      </tr>
     </table>

    <fieldset class="options">
        <legend><?php _e('Respuestas', 'wpcf') ?></legend>
        <table width="100%" cellspacing="2" cellpadding="5" class="editform">
          <tr valign="top">
            <th scope="row"><?php _e('Formulario correcto:', 'wpcf') ?></th>
            <td><textarea name="wpcf_success_msg" id="wpcf_success_msg" style="width: 80%;" rows="4" cols="50"><?php echo $wpcf_success_msg; ?></textarea>
            <br />
    <?php _e('Cuando el formulario este correctamente rellenado, este será el mensaje que vera el usuario.', 'wpcf') ?></td>
          </tr>
          <tr valign="top">
            <th scope="row"><?php _e('Error en el formulario:', 'wpcf') ?></th>
            <td><textarea name="wpcf_error_msg" id="wpcf_error_msg" style="width: 80%;" rows="4" cols="50"><?php echo $wpcf_error_msg; ?></textarea>
            <br />
    <?php _e('Si el usuario no rellena un de los campos requeridos, verá este mensaje.', 'wpcf') ?> <br />
    <?php _e('Puede aplicar CSS en este texto, colocándolo entre <code>&lt;p style="[su CSS aqui]"&gt; &lt;/p&gt;</code>.', 'wpcf') ?><br />
    <?php _e('IE. <code>&lt;p style="color:red;"&gt;Por favor complete todos los campos requeridos.&lt;/p&gt;</code>.', 'wpcf') ?></td>
          </tr>
        </table>

    </fieldset>

    <fieldset class="options">
        <legend><?php _e('Avanzado', 'wpcf') ?></legend>

        <table width="100%" cellpadding="5" class="editform">
          <tr valign="top">
            <th width="30%" scope="row" style="text-align: left"><?php _e('Insertar Quicktag en  el editor', 'wpcf') ?></th>
            <td>
                <input name="wpcf_show_quicktag" type="checkbox" id="wpcf_show_quicktag" value="wpcf_show_quicktag"
                <?php if($wpcf_show_quicktag == TRUE) {?> checked="checked" <?php } ?> />
            </td>
          </tr>
         </table>

    </fieldset>

    <p class="submit">
      <input type="submit" name="Submit" value="<?php _e('Update Opciones', 'wpcf') ?> &raquo;" />
    </p>
  </form>
</div>
Bueno resulta que cuando el usuario envia el formulario correctamente le aparece como respuesta lo siguiente:
Gracias por tu comentario!

Que esta en esta parte del codigo:

Código PHP:
/*Lets add some default options if they don't exist*/
add_option('wpcf_email', __('[email protected]', 'wpcf'));
add_option('wpcf_subject', __('Comentario del blog', 'wpcf'));
add_option('wpcf_success_msg', __('Gracias por tu comentario!', 'wpcf'));
add_option('wpcf_error_msg', __('Por favor complete todos los campos requeridos.', 'wpcf'));
add_option('wpcf_show_quicktag', TRUE); 
Lo que me gustaria saber es si seria posible que envez de mostrar este mensaje, pues que automaticamente llevase al usuario al index de la pagina web.

Cita:
Opto por suprimir esta respuesta "Gracias por tu comentario!" porque no se como agregarle style a ese apartado, add_option('wpcf_success_msg', __('Gracias por tu comentario!', 'wpcf')); ya que me descuadra parte del sitio web devido al tamaño del texto con el que aparece. Si alguien sabe otra solucion oh si realmente se puede añadir style y me lo pudiera decir, se lo agradeceria.
Gracias:
Si necesitais el codigo del formulario esta en el siguiente post:

Última edición por xiscomax; 24/06/2007 a las 13:02
  #2 (permalink)  
Antiguo 24/06/2007, 12:58
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 20 años, 8 meses
Puntos: 5
Re: Necesito ayuda con Formulario.

Código PHP:
<?php
/*
Plugin Name: WP-ContactForm
Description: WP Contact Form es un formulario para que los usuarios se puedan poner fácilmente en contacto con usted. Se puede insertar en un post o en una web. Esta versión es de uso SOLO para Wordpress 2.0 --- Esta versión ha sido traducida por <a href="http://quintadimension.net/blog/">Quintadimension.net</a> si tiene alguna consulta o sugerencia consulte su web. --- Programado
Version: 1.4.3
*/

load_plugin_textdomain('wpcf',$path = 'wp-content/plugins/wp-contact-form');

// Attachments max size in KB!
$attachment_max_size = 1024;

/* Declare strings that change depending on input. This also resets them so errors clear on resubmission. */
$wpcf_strings = array(
    
'name' => '<div class="contactright"><input  class="textfield" type="text" name="wpcf_your_name" id="wpcf_your_name" size="30" maxlength="50" value="' . $_POST['wpcf_your_name'] . '" /> (requerido)</div>',
    
'email' => '<div class="contactright"><input  class="textfield" type="text" name="wpcf_email" id="wpcf_email" size="30" maxlength="50" value="' . $_POST['wpcf_email'] . '" /> (requerido)</div>',
    
'msg' => '<br/><textarea  class="textfield" name="wpcf_msg" id="wpcf_msg" cols="35" rows="8" >' . $_POST['wpcf_msg'] . '</textarea>',
    
'error' => '');

/*
This shows the quicktag on the write pages
Based off Buttonsnap Template
http://redalt.com/downloads
*/
if(get_option('wpcf_show_quicktag') == true) {
    include(
'buttonsnap.php');

    
add_action('init', 'wpcf_button_init');
    
add_action('marker_css', 'wpcf_marker_css');

    function 
wpcf_button_init() {
        
$wpcf_button_url = buttonsnap_dirname(__FILE__) . '/wpcf_button.png';

        
buttonsnap_textbutton($wpcf_button_url, __('Insert Contact Form', 'wpcf'), '<!--contact form-->');
        
buttonsnap_register_marker('contact form', 'wpcf_marker');
    }

    function 
wpcf_marker_css() {
        
$wpcf_marker_url = buttonsnap_dirname(__FILE__) . '/wpcf_marker.gif';
        echo 
"
            .wpcf_marker {
                    display: block;
                    height: 15px;
                    width: 155px
                    margin-top: 5px;
                    background-image: url({$wpcf_marker_url});
                    background-repeat: no-repeat;
                    background-position: center;
            }
        "
;
    }
}

function 
wpcf_is_malicious($input) {
    
$is_malicious = false;
    
$bad_inputs = array("\r", "\n", "mime-version", "content-type", "cc:", "to:");
    foreach(
$bad_inputs as $bad_input) {
        if(
strpos(strtolower($input), strtolower($bad_input)) !== false) {
            
$is_malicious = true; break;
        }
    }
    return 
$is_malicious;
}

/* This function checks for errors on input and changes $wpcf_strings if there are any errors. Shortcircuits if there has not been a submission */
function wpcf_check_input()
{
    if(!(isset(
$_POST['wpcf_stage']))) {return false;} // Shortcircuit.

    
$_POST['wpcf_your_name'] = stripslashes(trim($_POST['wpcf_your_name']));
    
$_POST['wpcf_email'] = stripslashes(trim($_POST['wpcf_email']));
    
$_POST['wpcf_website'] = stripslashes(trim($_POST['wpcf_website']));
    
$_POST['wpcf_msg'] = stripslashes(trim($_POST['wpcf_msg']));

    global 
$wpcf_strings;
    
$ok = true;

    if(empty(
$_POST['wpcf_your_name']))
    {
        
$ok = false; $reason = 'empty';
        
$wpcf_strings['name'] = '<div class="contactright"><input type="text" name="wpcf_your_name" id="wpcf_your_name" size="30" maxlength="50" value="' . $_POST['wpcf_your_name'] . '" class="contacterror" /> (' . __('requerido', 'wpcf') . ')</div>';
    }

    if(!
is_email($_POST['wpcf_email']))
    {
        
$ok = false; $reason = 'empty';
        
$wpcf_strings['email'] = '<div class="contactright"><input type="text" name="wpcf_email" id="wpcf_email" size="30" maxlength="50" value="' . $_POST['wpcf_email'] . '" class="contacterror" /> (' . __('requerido', 'wpcf') . ')</div>';
    }

    if(empty(
$_POST['wpcf_msg']))
    {
        
$ok = false; $reason = 'empty';
        
$wpcf_strings['msg'] = '<div class="contactright"><textarea name="wpcf_msg" id="wpcf_message" cols="35" rows="8" class="contacterror">' . $_POST['wpcf_msg'] . '</textarea></div>';
    }

    if(
wpcf_is_malicious($_POST['wpcf_your_name']) || wpcf_is_malicious($_POST['wpcf_email'])) {
        
$ok = false; $reason = 'malicious';
    }

    if(
$ok == true)
    {
        return 
true;
    }
    else {
        if(
$reason == 'malicious') {
            
$wpcf_strings['error'] = "<div style='font-weight: bold;'>You can not use any of the following in the Name or Email fields: a linebreak, or the phrases 'mime-version', 'content-type', 'cc:' or 'to:'.</div>";
        } elseif(
$reason == 'empty') {
            
$wpcf_strings['error'] = '<div style="font-weight: bold;">' . stripslashes(get_option('wpcf_error_msg')) . '</div>';
        }
        return 
false;
    }
}

/*Wrapper function which calls the form.*/
function wpcf_callback( $content )
{
    global 
$wpcf_strings, $attachment_max_size;

    
/* Run the input check. */

        
if(! preg_match('|<!--contact form-->|', $content)) {
        return 
$content;
        }

    if(
wpcf_check_input()) // If the input check returns true (ie. there has been a submission & input is ok)
    
{
            
$recipient = get_option('wpcf_email');
            
$subject = get_option('wpcf_subject');
                        
$success_msg = get_option('wpcf_success_msg');
                        
$success_msg = stripslashes($success_msg);

            
$name = $_POST['wpcf_your_name'];
            
$email = $_POST['wpcf_email'];
            
$website = $_POST['wpcf_website'];
            
$msg = $_POST['wpcf_msg'];

        
$regexp = "<a\s[^>]*href=(\"??)([^\" >]*?)\\1[^>]*>(.*)<\/a>";
        if(
preg_match_all("/$regexp/siU", $msg, $matches, PREG_SET_ORDER)) {
            if(
count($matches) > 2) {
                
$results = <h2 class="pagetitle red">No more than 2 links allowed

Última edición por xiscomax; 24/06/2007 a las 13:17
  #3 (permalink)  
Antiguo 24/06/2007, 12:59
Avatar de xiscomax  
Fecha de Ingreso: febrero-2006
Mensajes: 379
Antigüedad: 20 años, 8 meses
Puntos: 5
Re: Necesito ayuda con Formulario.

Código PHP:
!</h2>';
                echo $results;
                return;
             }
/*
            foreach($matches as $match) {
            # $match[2] = link address 
            # $match[3] = link text
            }
*/
        }

        $headers = "MIME-Version: 1.0\n";
        $headers .= "From: $name <$email>\n";
                        //$headers .= "Content-Type: text/plain; charset=\"" . get_settings('blog_charset') . "\"\n";

        $headers .= "Content-Type: multipart/related; type=\"multipart/alternative\"; boundary=\"----=MIME_BOUNDRY_main_message\"\n";
        $headers .= "X-Sender: $from_name<" . $email . ">\n";
        $headers .= "X-Mailer: PHP4\n";
        $headers .= "X-Priority: 3\n"; //1 = Urgent, 3 = Normal
        $headers .= "Return-Path: <" . $email . ">\n"; 
        $headers .= "This is a multi-part message in MIME format.\n";
        $headers .= "------=MIME_BOUNDRY_main_message \n"; 
        $headers .= "Content-Type: multipart/alternative; boundary=\"----=MIME_BOUNDRY_main_message\"\n"; 

            //$fullmsg = "$name wrote:\n";
            //$fullmsg .= wordwrap($msg, 80, "\n") . "\n\n";
            //$fullmsg .= "Website: " . $website . "\n";
            //$fullmsg .= "IP: " . getip();


$filecount = 0;
foreach($_FILES as $file => $value) {
    $attachment[(int)$filecount] = $_FILES[$file]['tmp_name'];
    $attachment_name[(int)$filecount] = $_FILES[$file]['name'];
    $attachment_size[(int)$filecount] = $_FILES[$file]['size'];
    if (is_uploaded_file($attachment[(int)$filecount])) { //Do we have a file uploaded?
        if ($attachment_size[(int)$filecount] <= $attachment_max_size * 1024) { //Do we have a file uploaded?
            $fp = fopen($attachment[(int)$filecount], "rb"); //Open it
            $data[(int)$filecount] = fread($fp, filesize($attachment[(int)$filecount])); //Read it
            $data[(int)$filecount] = chunk_split(base64_encode($data[(int)$filecount])); //Chunk it up and encode it as base64 so it can emailed
            fclose($fp);
            $filecount++;
        }
    }
}
    //$attachment = $_FILES['cattachment']['tmp_name'];
//    $attachment_name = $_FILES['cattachment']['name']; 
//    if (is_uploaded_file($attachment)) { //Do we have a file uploaded?
//      $fp = fopen($attachment, "rb"); //Open it
//      $data = fread($fp, filesize($attachment)); //Read it
//      $data = chunk_split(base64_encode($data)); //Chunk it up and encode it as base64 so it can emailed
//        fclose($fp);
//    } 
    
    $fullmsg = "------=MIME_BOUNDRY_main_message\n";
    $fullmsg .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; 
    $fullmsg .= "Content-Transfer-Encoding: quoted-printable\n"; 
    $fullmsg .= "\n"; 
    /* Add our message, in this case it's plain text.  You could also add HTML by changing the Content-Type to text/html */
    $fullmsg .= "Sitio web: " . $website . "\n";
        $fullmsg .= "$name wrote:\n";
    $fullmsg .= wordwrap($msg, 80, "\n") . "\n\n";
    $fullmsg .= "\n"; 
    $fullmsg .= "------=MIME_BOUNDRY_main_message\n"; 
    $fullmsg .= "\n"; 

        $fullmsg .= "------=MIME_BOUNDRY_main_message\n"; 
  
for ($i = 0, $filecount = (int) count($data); $i < $filecount; $i++) {
    $fullmsg .= "------=MIME_BOUNDRY_main_message\n";
    $fullmsg .= "Content-Type: application/octet-stream;\n\tname=\"" . $attachment_name[$i] . "\"\n";
    $fullmsg .= "Content-Transfer-Encoding: base64\n";
    $fullmsg .= "Content-Disposition: attachment;\n\tfilename=\"" . $attachment_name[$i] . "\"\n\n";
    $fullmsg .= $data[$i]; //The base64 encoded message
    $fullmsg .= "\n\n";
}

      //$fullmsg .= "Content-Type: application/octet-stream;\n\tname=\"" . $attachment_name . "\"\n";
    //$fullmsg .= "Content-Transfer-Encoding: base64\n";
    //$fullmsg .= "Content-Disposition: attachment;\n\tfilename=\"" . $attachment_name . "\"\n\n";
    //$fullmsg .= $data; //The base64 encoded message
    //$fullmsg .= "\n"; 
    $fullmsg .= "------=MIME_BOUNDRY_main_message\n";  

            mail($recipient, $subject, $fullmsg, $headers);

            $results = '<h2 class="pagetitle">' . $success_msg . '</h2>';
            echo $results;
    }
    else // Else show the form. If there are errors the strings will have updated during running the inputcheck.
    {
        $form = '<div class="contactform"><h2 align="center">Contact me</h2>
        ' . $wpcf_strings['error'] . '
            <form enctype="multipart/form-data" action="' . get_permalink() . '" method="post">
                <div class="contactleft"><label for="wpcf_your_name">' . __('Nombre (*): ', 'wpcf') . '</label></div>' . $wpcf_strings['name']  . '
                <div class="contactleft"><label for="wpcf_email">' . __('E-Mail (*):', 'wpcf') . '</label></div>' . $wpcf_strings['email'] . '
                <div class="contactleft"><label for="wpcf_website">' . __('Sitio web:', 'wpcf') . '</label></div><div class="contactright"><input class="textfield" type="text" name="wpcf_website" id="wpcf_website" size="30" maxlength="100" value="' . $_POST['wpcf_website'] . '" /></div>
                <div class="contactleft nop"><label for="wpcf_msg">' . __('Mensaje: ', 'wpcf') . '</label>' . $wpcf_strings['msg'] . '</div>
                <div class="contactleft nop"><label for="wpcf_msg">' . __('Añadir Fotos: ', 'wpcf') . '<small>max ' . $attachment_max_size . ' kb</small></label><br/>
                            <input type="file" name="cattachment1"  class="textfield file" /><br/>
                            <input type="file" name="cattachment2"  class="textfield file" /><br/>
                            <input type="file" name="cattachment3"  class="textfield file" /></div>
                <div class="contactright"><input type="submit" name="Submit" value="Send" id="contactsubmit" /><input type="hidden" name="wpcf_stage" value="process" /></div>
            </form>
        </div>
        <div style="clear:both; height:1px;">&nbsp;</div>';
        return str_replace('<!--contact form-->', $form, $content);
    }
}


/*Can't use WP's function here, so lets use our own*/
function getip()
{
    if (isset($_SERVER))
    {
         if (isset($_SERVER["HTTP_X_FORWARDED_FOR"]))
         {
              $ip_addr = $_SERVER["HTTP_X_FORWARDED_FOR"];
         }
         elseif (isset($_SERVER["HTTP_CLIENT_IP"]))
         {
              $ip_addr = $_SERVER["HTTP_CLIENT_IP"];
         }
         else
         {
             $ip_addr = $_SERVER["REMOTE_ADDR"];
         }
    }
    else
    {
         if ( getenv( 'HTTP_X_FORWARDED_FOR' ) )
         {
              $ip_addr = getenv( 'HTTP_X_FORWARDED_FOR' );
         }
         elseif ( getenv( 'HTTP_CLIENT_IP' ) )
         {
              $ip_addr = getenv( 'HTTP_CLIENT_IP' );
         }
         else
         {
              $ip_addr = getenv( 'REMOTE_ADDR' );
         }
    }
return $ip_addr;
}


/*CSS Styling*/
function wpcf_css()    {
    ?>
<?php

    
}

function 
wpcf_add_options_page()
    {
        
add_options_page('Contact Form Options', 'Contact Form', 'manage_options', 'wp-contact-form/options-contactform.php');
    }

/* Action calls for all functions */

//if(get_option('wpcf_show_quicktag') == true) {add_action('admin_footer', 'wpcf_add_quicktag');}

add_action('admin_head', 'wpcf_add_options_page');
add_filter('wp_head', 'wpcf_css');
add_filter('the_content', 'wpcf_callback', 7);

?>
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 02:52.