Récupérer $variable et l'injecter dans URL (php)

Résolu/Fermé
jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022 - 6 sept. 2022 à 10:09
jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022 - 8 sept. 2022 à 11:04

Bonjour,

Sous Wordpress, j'ai un formulaire avec 1 unique champ destiné à vérifier la validité d'un coupon de réduction.
La vérification se fait correctement.
Mon problème est qu'en cas de validité du coupon, je cherche à l'inclure dans une url.

Malgrès mes diverses tentatives je ne parviens pas à générer en php le lien incluant la variable valide ($coupon = XXXX dans cet exemple).

Le Lien que je cherche à obtenir est du type: https://www.monsite.com/XXXX

Voici le code utilisé:

add_shortcode( 'coupon_field', 'display_coupon_field' );
function display_coupon_field() {
//$message = "";
 if( isset($_GET['coupon']) && isset($_GET['redeem-coupon']) ){
$coupon_code = wc_format_coupon_code($_GET['coupon']);
$coupon = new WC_Coupon( $coupon_code );
if ( $coupon->is_valid() ) {
$makeredirection = header("Location: https://www.xxx.com/'. $coupon.' "); (<<<<<< ne fonctionne pas)
 } else {}
$success = __('Le COUPON CODE "%s" est valide! ');
$error   = __("Ce COUPON CODE n'est pas ou plus valide ou a déjà été utilisé!");
$message = isset($makeredirection) && $makeredirection ? $success : $error;
}
$output  = '<div class="cadre-coupon">
<div class="redeem-coupon">
<form id="coupon-redeem">
<h2 style="text-align: center; color: #ff00ff;">Echangez vos COUPONS CODES</h2>
 <input type="text" name="coupon" id="coupon" placeholder="Renseignez ici votre COUPON CODE..."/>
 <input type="submit" class="bouton-coupon" name="redeem-coupon" value="' .__('Récupérer mes avantages!'). '"/>';
return $output . '</form><p>'. $message .'</p></div></div>';
}

Qui aurait la gentillesse de me donner un coup de main sur ce problème? Je ne parviens pas à le résoudre...


Macintosh / Chrome 104.0.0.0

A voir également:

4 réponses

jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
6 sept. 2022 à 11:17

Bonjour,

$makeredirection = header("Location: https://www.xxx.com/". $coupon); 

0
jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022
6 sept. 2022 à 11:28

Bonjour Jordan,

Merci pour votre réponse.

J'ai modifié le code comme mentionné. Mais j'obtien une URL du type "https://www.xxx.com/%7B%22id%22:91731,%22code%22:%22adlr-mmmp-z4hh%22,%22amount%22:%22100%22,%22status%22:%22publish%22,%22date_created%22:%7B%22date%22:%222022-04-26%2009:20:47.000000%22,%22timezone_type%22:1,%22timezone%22:%22+00:00%22%7D,%22date_modified%22:%7B%22date%22:%222022-09-05%2014:20:00.000000%22,%22timezone_type%22:1,%22timezone%22:%22+00:00%22%7D,%22date_expires%22:null,%22discount_type%22:%22percent%22,%22description%22:%22Ce%20COUPON%20CODE%20vous%20permet%20d//'obtenir%20gratuitement%20un%20Pack%20de%2025%20CBJ!%20F/u00e9licitations!%22,%22usage_count%22:0,%22individual_use%22:true,%22product_ids%22:[],%22excluded_product_ids%22:[],%22usage_limit%22:0,%22usage_limit_per_user%22:1000,%22limit_usage_to_x_items%22:null,%22free_shipping%22:false,%22product_categories%22:[],%22excluded_product_categories%22:[],%22exclude_sale_items%22:true,%22minimum_amount%22:%22%22,%22maximum_amount%22:%22%22,%22email_restrictions%22:[],%22used_by%22:[],%22virtual%22:false,%22meta_data%22:[%7B%22id%22:448442,%22key%22:%22_wt_free_product_ids%22,%22value%22:%2284755%22%7D,%7B%22id%22:448443,%22key%22:%22wt_apply_discount_before_tax_calculation%22,%22value%22:%220%22%7D,%7B%22id%22:448444,%22key%22:%22_wt_product_discount_amount%22,%22value%22:%22100%22%7D,%7B%22id%22:448445,%22key%22:%22_wt_product_discount_type%22,%22value%22:%22percent%22%7D,%7B%22id%22:448446,%22key%22:%22_wt_product_discount_quantity%22,%22value%22:%221%22%7D,%7B%22id%22:448447,%22key%22:%22wt_nth_order_no_of_orders%22,%22value%22:%220%22%7D,%7B%22id%22:448448,%22key%22:%22nth_coupon_no_of_coupon_condition%22,%22value%22:%22please_select%22%7D,%7B%22id%22:448449,%22key%22:%22wt_order_Status_need_to_count%22,%22value%22:[]%7D,%7B%22id%22:448450,%22key%22:%22wt_nth_order_order_total%22,%22value%22:%22%22%7D,%7B%22id%22:448451,%22key%22:%22nth_coupon_exclude_already_awarded%22,%22value%22:%22%22%7D,%7B%22id%22:448452,%22key%22:%22_wt_sc_shipping_methods%22,%22value%22:%22%22%7D,%7B%22id%22:448453,%22key%22:%22_wt_sc_payment_methods%22,%22value%22:%22%22%7D,%7B%22id%22:448454,%22key%22:%22_wt_need_check_location_in%22,%22value%22:%22billing%22%7D,%7B%22id%22:448455,%22key%22:%22_wt_coupon_available_location%22,%22value%22:%22%22%7D,%7B%22id%22:448456,%22key%22:%22_wt_sc_user_roles%22,%22value%22:%22%22%7D,%7B%22id%22:448457,%22key%22:%22_wt_category_condition%22,%22value%22:%22or%22%7D,%7B%22id%22:448458,%22key%22:%22_wt_product_condition%22,%22value%22:%22or%22%7D,%7B%22id%22:448459,%22key%22:%22_wt_min_matching_product_qty%22,%22value%22:%22%22%7D,%7B%22id%22:448460,%22key%22:%22_wt_max_matching_product_qty%22,%22value%22:%22%22%7D,%7B%22id%22:448461,%22key%22:%22_wt_min_matching_product_subtotal%22,%22value%22:%22%22%7D,%7B%22id%22:448462,%22key%22:%22_wt_max_matching_product_subtotal%22,%22value%22:%22%22%7D,%7B%22id%22:448463,%22key%22:%22_wc_make_coupon_available%22,%22value%22:%22%22%7D,%7B%22id%22:448464,%22key%22:%22_wt_make_coupon_available_in_myaccount%22,%22value%22:%22%22%7D,%7B%22id%22:448465,%22key%22:%22_wt_coupon_unique_url%22,%22value%22:%22adlr-mmmp-z4hh%22%7D,%7B%22id%22:448466,%22key%22:%22_wt_auto_product_to_cart%22,%22value%22:%2284755%22%7D,%7B%22id%22:448467,%22key%22:%22_wt_url_coupon_page_to_redirect%22,%22value%22:%22%22%7D,%7B%22id%22:448468,%22key%22:%22_wt_url_coupon_page_to_redirect_as%22,%22value%22:%22page%22%7D,%7B%22id%22:448470,%22key%22:%22armaffiliate_coupon_affiliate%22,%22value%22:%220%22%7D,%7B%22id%22:448472,%22key%22:%22_wt_max_discount%22,%22value%22:%22%22%7D,%7B%22id%22:448473,%22key%22:%22items_mandatory%22,%22value%22:%22no%22%7D,%7B%22id%22:448474,%22key%22:%22_wjecf_products_and%22,%22value%22:%22no%22%7D,%7B%22id%22:448475,%22key%22:%22_wjecf_categories_and%22,%22value%22:%22no%22%7D,%7B%22id%22:448476,%22key%22:%22_wjecf_is_auto_coupon%22,%22value%22:%22yes%22%7D,%7B%22id%22:448477,%22key%22:%22_wjecf_apply_silently%22,%22value%22:%22no%22%7D,%7B%22id%22:448478,%22key%22:%22_wt_make_auto_coupon%22,%22value%22:%22%22%7D,%7B%22id%22:448479,%22key%22:%22_wt_coupon_start_date%22,%22value%22:%222022-09-01%22%7D,%7B%22id%22:448480,%22key%22:%22_wt_coupon_start_date_timestamp%22,%22value%22:%221661986800%22%7D,%7B%22id%22:448481,%22key%22:%22_wt_coupon_enable_days%22,%22value%22:%22%22%7D,%7B%22id%22:448482,%22key%22:%22_wt_coupon_expiry_in_days%22,%22value%22:%22365%22%7D,%7B%22id%22:448483,%22key%22:%22cwp_meta_box_check%22,%22value%22:%22No%22%7D,%7B%22id%22:449505,%22key%22:%22dfiFeatured%22,%22value%22:[%22%22]%7D,%7B%22id%22:453207,%22key%22:%22_wcs_number_payments%22,%22value%22:%22%22%7D]%7D

Avec en réponse une page "Forbiden / Nginx" 

Serait-ce un problème de version php ? (j'utilise la 7.4) ou un problème de urlencode() ?

Je sèche...

0
jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022
6 sept. 2022 à 11:30

Ha non version php 8.0.22

0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649 > jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022
6 sept. 2022 à 15:30

C'est peut-être la variable utilisée qui n'est pas la bonne..

Pourquoi ne pas utiliser $coupon_code  au lieu de $coupon ?

0
jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022
6 sept. 2022 à 18:38

Re bonjour,

non il me semble qu'il s'agisse de la bonne variable...

Peut-être une extension php / module à activer?

0
jordane45 Messages postés 38142 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
6 sept. 2022 à 20:08

la variable coupon semble être un objet avec pleins de trucs dedans.. je doutes que tu veuilles passer cet objet intégralement dans une url ..

0
jemo360 Messages postés 5 Date d'inscription mardi 6 septembre 2022 Statut Membre Dernière intervention 8 septembre 2022
8 sept. 2022 à 11:04

The good solution:

//******************** REDEEM COUPON WITH URL ********************
 //usage: [coupon_field] or in Php code echo do_shortcode("[coupon_field]"); *//
add_shortcode('coupon_field', 'display_coupon_field');
function display_coupon_field() {
    if( isset($_GET['coupon']) && isset($_GET['redeem-coupon']) ){
        if( $coupon = esc_attr($_GET['coupon']) ) {
            //$applied = WC()->cart->apply_coupon($coupon);
            $makerredirection = header("Location: https://www.domain.ltd/". $coupon);
        } else {
            $coupon = false;
        }

        $success = sprintf( __('The COUPON CODE "%s" is valid! Validate your basket for free to recover your free product!'), $coupon );
        $error = __("This COUPON CODE is not or no longer valid or has already been used!");
$message = isset($makerredirection) && $makerredirection? $success: $error;
        
    }

    $output = '<div class="coupon-frame"><div class="redeem-coupon"><form id="coupon-redeem">
            <h2 style="text-align: center; color: #ff00ff;">Redeem your COUPON CODES to get your FREE product!</h2>
    <p><input type="text" name="coupon" id="coupon" placeholder="Enter your COUPON CODE here..."/>
    <input type="submit" name="redeem-coupon" value="'.__('Recover my FREE Product or Discount!').'" /></p>';

    $output .= isset($coupon) ? '<p class="result">'.$message.'</p>': '';

    return $output. '</form></div></div>';
}

Si cela peut aider quelqu'un dans ce même besoin

0