2017-10-20 16 views
0

J'essaie de rediriger vers une autre page une fois qu'un csv a été généré en cliquant sur le bouton soumettre. Jusqu'à présent, quand je clique sur le bouton, il envoie le CSV et il me donne le message "Succès" qui me fait penser que ça fonctionne bien.Php redirection ne fonctionne pas sur la soumission

Cependant, ce que je veux vraiment que la page redirige après la soumission a été faite. J'ai ajouté l'en-tête (emplacement:) dans l'instruction else, mais cela ne fait rien.

Quelqu'un peut-il m'aider s'il vous plaît?

if (isset($_POST['submit'])) { 

    function send_csv_mail ($csvData, $body, $to = '[email protected]', $subject = 'Test email with attachment', $from = '[email protected]') { 

    global $post; 
    $user_id = get_current_user_id(); 

     // This will provide plenty adequate entropy 
     $multipartSep = '-----'.md5(time()).'-----'; 

     // Arrays are much more readable 
     $headers = array(
     "From: $from", 
     "Reply-To: $from", 
     "Content-Type: multipart/mixed; boundary=\"$multipartSep\"" 
    ); 

     // Make the attachment 
     $attachment = chunk_split(base64_encode(create_csv_string($csvData))); 

     // Make the body of the message 
     $body = "--$multipartSep\r\n" 
      . "Content-Type: text/plain; charset=ISO-8859-1; format=flowed\r\n" 
      . "Content-Transfer-Encoding: 7bit\r\n" 
      . "\r\n" 
      . "$body\r\n" 
      . "--$multipartSep\r\n" 
      . "Content-Type: text/csv\r\n" 
      . "Content-Transfer-Encoding: base64\r\n" 
      . "Content-Disposition: attachment; filename=\"".date('Y-m-d')."-".str_replace(' ', '-', strtolower(get_user_meta($user_id, "wpcf-branch-active", true)))."-file.csv\"\r\n" 
      . "\r\n" 
      . "$attachment\r\n" 
      . "--$multipartSep--"; 

     // Send the email, return the result 
     return @mail($to, $subject, $body, implode("\r\n", $headers)); 

    } 

    $array = array(
        array("Code", "Product Category", "Product Family", "Description", "Quantity", "Bay"),   
    ); 



    send_csv_mail($array, "Hello World!!!\r\n This is simple text email message."); 



    if(!send_csv_mail) { 
     echo "Error"; 
    } 
    else { 
     echo "success"; 
    Header("Location: somewhere.php"); 
    die(); 
    } 



    } 

Répondre

1

Je pense que c'est la meilleure solution que je l'utilise toujours: Ceci est un problème commun: utiliser HTML redirect comme ci-dessous:

echo "<meta http-equiv=\"refresh\" content=\"0; url=./somewhere.php\" />"; 

Si vous utilisez de cette façon. vous pouvez également définir l'heure de rediriger comme si vous voulez attendre 1 seconde, vous pouvez écrire comme ci-dessous.

echo "<meta http-equiv=\"refresh\" content=\"1; url=./somewhere.php\" />"; 
0

Vous pouvez utiliser WordPress redirect fonction

wp_redirect($url); 
1

Vous ne pouvez pas envoyer des données au client/tampon, puis définissez un en-tête, parce que l'en-tête a déjà été envoyé. Supprimer echo "success"; et cela fonctionnera. Vous pouvez utiliser ob_clean() pour nettoyer le tampon aussi, vérifier ici: http://php.net/manual/en/function.ob-clean.php

0

Une alternative est de mettre fin à votre balise PHP après le succès, puis utilisez:

<script> 
location.replace("somewhere.php"); 
</script> 

puis ramasser votre balise PHP pour attraper vos supports de fermeture.

Bien que ce soit JavaScript, pour vos besoins, il fonctionnera brillamment à chaque fois.