NAVIGATION
This shows you the differences between two versions of the page.
|
deutsch:module:shop:paypal-neu [2012/02/26 13:58] Robert |
deutsch:module:shop:paypal-neu [2018/06/03 18:09] (current) |
||
|---|---|---|---|
| Line 17: | Line 17: | ||
| ==== #1: DB-Update ==== | ==== #1: DB-Update ==== | ||
| - | Es muß eine neuen Zwischenspeicher-Tabelle angelegt werden. | + | Es muß eine neue Zwischenspeicher-Tabelle angelegt werden. |
| <code php|h SQL-Anweisung in phpmyadmin ausführen:|h> | <code php|h SQL-Anweisung in phpmyadmin ausführen:|h> | ||
| Line 51: | Line 51: | ||
| ) ENGINE=MyISAM AUTO_INCREMENT=14 ; | ) ENGINE=MyISAM AUTO_INCREMENT=14 ; | ||
| </code> | </code> | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| + | \\ | ||
| ==== #2: Einspielen der notwendige Dateien ==== | ==== #2: Einspielen der notwendige Dateien ==== | ||
| - front_order_process.inc.php \\ | - front_order_process.inc.php \\ | ||
| - paypal.class.php \\ | - paypal.class.php \\ | ||
| - | hier herunterladen | + | hier herunterladen \\ |
| - | {{:deutsch:module:shop:phpwcms_paypal.zip|}} | + | {{:deutsch:module:shop:phpwcms_r421andup_paypal.zip|}} |
| - | und auf den Server/ in include/inc_module/mod_shop_paypal/inc kopieren. | + | und auf den Server in include/inc_module/mod_shop_paypal/inc kopieren. |
| \\ | \\ | ||
| - | ==== #3: Modifizieren des bestehenden Orderprocess ==== | ||
| \\ | \\ | ||
| \\ | \\ | ||
| + | \\ | ||
| + | |||
| + | ==== #3: Modifizieren des bestehenden Orderprocess ==== | ||
| === 1. Template File === | === 1. Template File === | ||
| Line 123: | Line 129: | ||
| - | === 2.1: frontend.render.php === | + | === 2: frontend.render.php === |
| Nach | Nach | ||
| <code> | <code> | ||
| Line 173: | Line 179: | ||
| $_SESSION['shopping_cart']['order_number'] = $order_num; | $_SESSION['shopping_cart']['order_number'] = $order_num; | ||
| - | switch( $_SESSION['shopping_cart']['payby'] ){ | + | switch( $_SESSION[CART_KEY]['payby'] ){ |
| - | + | ||
| case 'paypal': | case 'paypal': | ||
| headerRedirect(PHPWCMS_URL.$_tmpl['config']['cart_url']."&shop_order_process"); | headerRedirect(PHPWCMS_URL.$_tmpl['config']['cart_url']."&shop_order_process"); | ||
| Line 191: | Line 197: | ||
| } //endswitch | } //endswitch | ||
| </code> | </code> | ||
| - | wieder schließen. \\ | + | wieder schließen. |
| \\ | \\ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | |||
| - | === 7. processing.preferences.inc.php === | ||
| - | Ersetzungen wie folgt. Nach | ||
| - | <code> | ||
| - | $plugin['data']['shop_pref_email_from'] = clean_slweg($_POST['pref_email_from']); | ||
| - | </code> | ||
| - | ggf. das einfügen | ||
| - | <code> | ||
| - | $plugin['data']['shop_pref_email_paypal'] = clean_slweg($_POST['pref_email_paypal']); | ||
| - | </code> | ||
| \\ | \\ | ||
| - | nach | ||
| - | <code> | ||
| - | if(! is_valid_email($plugin['data']['shop_pref_email_from']) ) $plugin['data']['shop_pref_email_from'] = ''; | ||
| - | </code> | ||
| - | ggf. das einfügen: | ||
| - | <code> | ||
| - | if(! is_valid_email($plugin['data']['shop_pref_email_paypal']) ) $plugin['data']['shop_pref_email_paypal'] = ''; | ||
| - | </code> | ||
| \\ | \\ | ||
| - | vor | + | \\ |
| + | Suche | ||
| <code> | <code> | ||
| - | 'prepay' => empty($_POST['pref_payment_prepay']) ? 0 : 1, | + | $supported = array('prepay' => 0, 'pod' => 0, 'onbill' => 0); |
| </code> | </code> | ||
| - | ggf. das einfügen | + | und überschreiben mit |
| - | <code> | + | <code php|h $supported mit:|h> |
| - | 'paypal' => empty($_POST['pref_payment_paypal']) ? 0 : 1, | + | $supported = array('paypal' => 0, 'prepay' => 0, 'pod' => 0, 'onbill' => 0); |
| - | </code> | + | |
| - | \\ | + | |
| - | nach | + | |
| - | <code> | + | |
| - | _setConfig('shop_pref_email_from', $plugin['data']['shop_pref_email_from'], 'module_shop'); | + | |
| - | </code> | + | |
| - | ggf. das einfügen | + | |
| - | <code> | + | |
| - | _setConfig('shop_pref_email_paypal', $plugin['data']['shop_pref_email_paypal'], 'module_shop'); | + | |
| </code> | </code> | ||
| + | überschreiben. | ||
| \\ | \\ | ||
| - | nach | ||
| - | <code> | ||
| - | 'shop_pref_email_from' => '', | ||
| - | </code> | ||
| - | ggf. das einfügen | ||
| - | <code> | ||
| - | 'shop_pref_email_paypal' => '', | ||
| - | </code> | ||
| \\ | \\ | ||
| - | nach | ||
| - | <code> | ||
| - | 'prepay'=> 1, | ||
| - | </code> | ||
| - | ggf. das einfügen | ||
| - | <code> | ||
| - | 'paypal' => 1, | ||
| - | </code> | ||
| \\ | \\ | ||
| - | \\ | ||
| - | === 8. Language-Files === | ||
| - | Ggf. die language files unter /include/inc_module/mod_shop/lang mit paypal anreichern. \\ | ||
| - | Das sollte eigentlich bei phpwcms > 2007 bereits vorhanden sein. | ||
| \\ | \\ | ||
| - | Bspw. für deutsch nach | + | Das ans ende vor dem schließenden PHP-Tag kopieren: |
| - | <code> | + | <code php|h |h> |
| - | $BLM['shopprod_payment_method'] = 'Zahlungsmethoden'; | + | function validateReferrer( $yoursite, //Your site url without 'http://' or subdomain |
| - | </code> | + | $domain_name //Type your domain with www. this time |
| - | das einfügen | + | ) |
| - | <code> | + | { |
| - | $BLM['shopprod_payby_paypal'] = 'PayPal'; | + | |
| - | $BLM['shopprod_email_paypal'] = 'PayPal E-Mail'; | + | |
| - | </code> | + | |
| - | \\ | + | |
| - | \\ | + | |
| - | \\ | + | |
| - | ==== #4: Zwischenzusammenfassung ==== | + | |
| - | Ab jetzt müßte \\ | + | |
| - | a. die Zahlart PayPal Auswahl im Shop verfügbar sein \\ | + | |
| - | b. eine Weiterleitung zu PayPal geschehen (derzeit ist noch die Sandbox Testumgebung aktiv) \\ | + | |
| - | c. der Shop innerhalb seiner normalen Parameter funktionieren. \\ | + | |
| - | \\ | + | |
| - | Sollte eine der oben aufgeführten Punkte nicht zutreffen gibt es ein Problem. Kontrollier bitte noch einmal ganz genau die Punkt eins bis drei. | + | |
| - | \\ | + | |
| - | \\ | + | |
| - | Sollte es zu eigenartigen Weiterleitungen beim ABschliessen des Bestellprozesses kommen, dann trifft dies zu: | + | |
| - | Die zur Verfügung gestellte Datei front.order_process.inc.php enthält einen Abschitt, zum Überprüfen des Referrer. | + | |
| - | <code> | + | |
| - | switch ($_GET['action']) { | + | |
| - | + | ||
| - | case 'process': // Process and order... | + | |
| - | validateReferrer( $phpwcms['site_domain'], | + | |
| - | $phpwcms['machine_alias'].'.'.$phpwcms['site_domain'] | + | |
| - | );//or bail... | + | |
| - | </code> | + | |
| - | Diese Parameter $phpwcms['machine_alias'] und $phpwcms['site_domain'] existieren Standardmäßig nicht und sollten ggf. in die config.inc.php nachgetragen werden. | + | |
| - | Konkret wäre das: | + | |
| - | <code> | + | |
| - | $phpwcms['site_domain'] = 'domain.de'; // ohne www oder subdomain | + | |
| - | $phpwcms['machine_alias'] = 'alias'; // www oder subdomain | + | |
| - | </code> | + | |
| - | Bitte ggf auch die frontend.render.php => function validateReferrer() einsehen und verstehen was da passiert! | + | $referer = $_SERVER['HTTP_REFERER']; |
| + | //Check if browser sends referrer url or not | ||
| + | if ($referer == "") { //If not, set referrer as your domain | ||
| + | $domain = $yoursite; | ||
| + | } else { | ||
| + | $domain = parse_url($referer); //If yes, parse referrer | ||
| + | } | ||
| - | ==== #5.1: Übersetzung ==== | + | if($domain['host'] == $yoursite || $domain['host'] == $domain_name) { |
| - | Wird ein Kunde zu Paypal weiter geleitet erscheint eine Meldung. Diese ist derzeit in englischer Sprache. Unter paypal.class.php kann dies verändert werden. \\ | + | |
| - | \\ | + | |
| - | Such nach | + | |
| - | <code> | + | |
| - | // Generate the request header | + | |
| - | </code> | + | |
| - | und ersetze das darauf folgende | + | |
| - | <code php|h beispielhaft mit:|h> | + | |
| - | echo "<html>\n"; | + | |
| - | echo "<head><title>PayPal Zahlung...</title></head>\n"; | + | |
| - | echo "<body onLoad=\"document.forms['paypal_form'].submit();\">\n"; | + | //Run your dowloading code here normally |
| - | echo "<center><h2>Bitte warten. Sie werden jetzt zu PayPal weiter geleitet.</h2></center>\n"; | + | } else { |
| - | echo "<form method=\"post\" name=\"paypal_form\" "; | + | |
| - | echo "action=\"".$this->paypal_url."\">\n"; | + | //The referrer is not your site, we bail and redirect to home page |
| + | header("Location: http://".$domain_name."/index.php"); | ||
| + | |||
| + | exit(); //Stop running the script | ||
| - | foreach ($this->fields as $name => $value) { | ||
| - | echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n"; | ||
| } | } | ||
| - | echo "<center><br/><br/>Sollten Sie nicht innerhalb der nächsten Sekunden weitergeleitet werden "; | + | } |
| - | echo "klicken Sie bitte hier...<br/><br/>\n"; | + | |
| - | echo "<input type=\"submit\" value=\"Zu PayPal\"></center>\n"; | + | |
| - | echo "</form>\n"; | + | |
| - | echo "</body></html>\n"; | + | |
| + | function reinitialize_session(&$_tmpl){ | ||
| + | |||
| + | $_SESSION['shopping_cart']['order_number'] = ( isset($_POST['invoice']) ? clean_slweg($_POST['invoice']) : '' ); | ||
| + | $_SESSION['shopping_cart']['step1'] = array( | ||
| + | |||
| + | 'INV_FIRSTNAME' => isset($_POST['first_name']) ? clean_slweg($_POST['first_name']) : '', | ||
| + | 'INV_NAME' => isset($_POST['last_name']) ? clean_slweg($_POST['last_name']) : '', | ||
| + | 'INV_ADDRESS' => isset($_POST['address_street']) ? clean_slweg($_POST['address_street']) : '', | ||
| + | 'INV_ZIP' => isset($_POST['address_zip']) ? clean_slweg($_POST['address_zip']) : '', | ||
| + | 'INV_CITY' => isset($_POST['address_city']) ? clean_slweg($_POST['address_city']) : '', | ||
| + | 'INV_REGION' => isset($_POST['address_state']) ? clean_slweg($_POST['address_state']) : '', | ||
| + | 'INV_COUNTRY' => isset($_POST['address_country']) ? clean_slweg($_POST['address_country']) : '', | ||
| + | 'EMAIL' => isset($_POST['payer_email']) ? clean_slweg($_POST['payer_email']) : '', | ||
| + | 'PHONE' => isset($_POST['contact_phone']) ? clean_slweg($_POST['contact_phone']) : '' | ||
| + | |||
| + | ); | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | function reinitialize_cart_products( $order_num ){ | ||
| + | |||
| + | $cart_data = Array(); | ||
| + | $cart_data[0] = "uninitialized"; | ||
| + | |||
| + | |||
| + | $q_result = _dbQuery("SELECT * FROM ".DB_PREPEND."phpwcms_shop_orders WHERE order_number='".$order_num."' LIMIT 1"); | ||
| + | |||
| + | if(isset($q_result[0])){ | ||
| + | |||
| + | $cart_data = unserialize($q_result[0]['order_data']); | ||
| + | |||
| + | } | ||
| + | |||
| + | return $cart_data; | ||
| + | |||
| + | } | ||
| + | |||
| + | function update_transactions_table(&$cart_data, &$P){ | ||
| + | $temp = Array( | ||
| + | "txn_id", | ||
| + | "reason_code", | ||
| + | "receiver_email", | ||
| + | "mc_gross", | ||
| + | "protection_eligibility", | ||
| + | "address_status", | ||
| + | "payer_id", | ||
| + | "tax", | ||
| + | "address_street", | ||
| + | "payment_date", | ||
| + | "payment_status", | ||
| + | "charset", | ||
| + | "address_zip", | ||
| + | "mc_shipping", | ||
| + | "mc_handling", | ||
| + | "first_name", | ||
| + | "mc_fee", | ||
| + | "address_country_code", | ||
| + | "address_name", | ||
| + | "notify_version", | ||
| + | "custom", | ||
| + | "invoice", | ||
| + | "num_cart_items", | ||
| + | "payer_status", | ||
| + | "business", | ||
| + | "address_country", | ||
| + | "address_city", | ||
| + | "payer_email", | ||
| + | "contact_phone", | ||
| + | "verify_sign", | ||
| + | "payment_type", | ||
| + | "last_name", | ||
| + | "address_state", | ||
| + | "payment_fee", | ||
| + | "pending_reason", | ||
| + | "receiver_id", | ||
| + | "txn_type", | ||
| + | "mc_currency", | ||
| + | "residence_country", | ||
| + | "receipt_id", | ||
| + | "test_ipn", | ||
| + | "transaction_subject", | ||
| + | "payment_gross", | ||
| + | "merchant_return_link", | ||
| + | "form_charset" | ||
| + | ); | ||
| + | |||
| + | |||
| + | $trans = Array(); | ||
| + | |||
| + | foreach( $temp as $key ){ | ||
| + | |||
| + | $trans[$key] = ( isset( $_POST[$key]) ? clean_slweg($_POST[$key]) : ''); | ||
| + | |||
| + | } | ||
| + | |||
| + | for( $i=0; $i < $trans['num_cart_items']; $i++ ){ | ||
| + | |||
| + | |||
| + | $trans['item_number'.($i+1)] = ( isset( $_POST['item_number' . ($i+1)]) ? clean_slweg($_POST['item_number'. ($i+1)]) : ''); | ||
| + | $trans['mc_gross_'.($i+1)] = ( isset( $_POST['mc_gross_' . ($i+1)]) ? clean_slweg($_POST['mc_gross_' . ($i+1)]) : ''); | ||
| + | $trans['quantity'.($i+1)] = ( isset( $_POST['quantity' . ($i+1)]) ? clean_slweg($_POST['quantity' . ($i+1)]) : ''); | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | $validTransaction = true; | ||
| + | |||
| + | // test the txn_id; if txn_id is used and it's not a chargeback then it's invalid | ||
| + | $txn_id_is_used = _dbCount("SELECT * FROM ".DB_PREPEND."phpwcms_shop_transactions WHERE txn_id='".$trans['txn_id']."'"); | ||
| + | |||
| + | if( $txn_id_is_used && !isset($trans['reason_code']) && !( empty($trans['txn_type']) && ($trans['reason_code'] === "chargeback")) ){ | ||
| + | $validTransaction = false; | ||
| + | $lastError .= "Failed Anti-fraud test 1: txn_id is used: ".$txn_id_is_used." txn_type: ".$trans['txn_type']." trans_reason_code: ".$trans['reason_code']."\n"; | ||
| + | } | ||
| + | |||
| + | // test receiver_email | ||
| + | if( $validTransaction && !( $trans['receiver_email'] === _getConfig( 'shop_pref_email_paypal', '_shopPref' ) ) ){ | ||
| + | $validTransaction = false; | ||
| + | $lastError .= "Failed Anti-fraud test 2: unmatched email addresses for receiver_email: ".$trans['receiver_email']." vs "._getConfig( 'shop_pref_email_paypal', '_shopPref' )."\n"; | ||
| + | } | ||
| + | |||
| + | // validate number of items | ||
| + | if( $validTransaction && ( count($cart_data['cart']) != $trans['num_cart_items'])){ | ||
| + | $validTransaction = false; | ||
| + | $lastError .= "Failed Anti-fraud test 3: number of items mismatch: items in cart: ".count($cart_data['cart'])." vs items in post: ".$trans['num_cart_items']."\n"; | ||
| + | } | ||
| + | |||
| + | // test to see that cart items match | ||
| + | if( $validTransaction ){ | ||
| + | |||
| + | for( $i=0; $i < $trans['num_cart_items']; $i++ ){ | ||
| + | |||
| + | |||
| + | if( $cart_data['cart'][$i]['shopprod_id'] != $trans['item_number'.($i+1)] || | ||
| + | $cart_data['cart'][$i]['shopprod_price'] != $trans['mc_gross_'.($i+1)] || | ||
| + | $cart_data['cart'][$i]['shopprod_quantity'] != $trans['quantity'.($i+1)] ){ | ||
| + | |||
| + | $validTransaction = false; | ||
| + | |||
| + | $lastError .= "\n\nFailed Anti-fraud test 3: product mismatch: \n"; | ||
| + | $lastError .= $cart_data['cart'][$i]['shopprod_id']." != ".$trans['item_number'.($i+1)].",\n"; | ||
| + | $lastError .= $cart_data['cart'][$i]['shopprod_price']." != ".$trans['mc_gross_'.($i+1)].",\n"; | ||
| + | $lastError .= $cart_data['cart'][$i]['shopprod_quantity']." != ".$trans['quantity'.($i+1)]."\n\n"; | ||
| + | |||
| + | } | ||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | } | ||
| + | |||
| + | |||
| + | if( $validTransaction ){ // No fraud detected | ||
| + | $data = Array( | ||
| + | 'receiver_email' => $trans['receiver_email'], | ||
| + | 'order_number' => $trans['invoice'], | ||
| + | 'payment_status' => $trans['payment_status'], | ||
| + | 'pending_reason' => $trans['pending_reason'], | ||
| + | 'payment_date' => $trans['payment_date'], | ||
| + | 'mc_gross' => $trans['mc_gross'], | ||
| + | 'mc_fee' => $trans['mc_fee'], | ||
| + | 'tax' => $trans['tax'], | ||
| + | 'mc_currency' => $trans['mc_currency'], | ||
| + | 'txn_id' => $trans['txn_id'], | ||
| + | 'txn_type' => $trans['txn_type'], | ||
| + | 'first_name' => $trans['first_name'], | ||
| + | 'last_name' => $trans['last_name'], | ||
| + | 'address_street' => $trans['address_street'], | ||
| + | 'address_city' => $trans['address_city'], | ||
| + | 'address_state' => $trans['address_state'], | ||
| + | 'address_zip' => $trans['address_zip'], | ||
| + | 'address_country' => $trans['address_country'], | ||
| + | 'address_status' => $trans['address_status'], | ||
| + | 'payer_email' => $trans['payer_email'], | ||
| + | 'contact_phone' => $trans['contact_phone'], | ||
| + | 'payer_status' => $trans['payer_status'], | ||
| + | 'payment_type' => $trans['payment_type'], | ||
| + | 'notify_version' => $trans['notify_version'], | ||
| + | 'verify_sign' => $trans['verify_sign'], | ||
| + | 'referrer_id' => $trans['referrer_id'] | ||
| + | ); | ||
| + | |||
| + | |||
| + | |||
| + | _dbInsertOrUpdate( DB_PREPEND."phpwcms_shop_transactions", $data, "txn_id = '".$trans['txn_id']."'", ''); | ||
| + | |||
| + | |||
| + | }else{ | ||
| + | |||
| + | $P->log_error($lastError ); | ||
| + | } | ||
| + | |||
| + | return $validTransaction; | ||
| + | |||
| + | } | ||
| </code> | </code> | ||
| \\ | \\ | ||
| \\ | \\ | ||
| - | ==== #5.2: Übersetzung ==== | ||
| - | Die Success/ Error Page muß ebenso angepasst werden. Diese -wie zuvor angelegt/ eingefügt- im Template ganz am Ende zu finden. \\ | ||
| \\ | \\ | ||
| - | <code php|h beispielhafte deutsche übersetzung:|h> | + | \\ |
| - | <!--PAYPAL_ORDER_DONE_START//--> | + | |
| - | <h2>Bestellung #{ORDER} erfolgreich platziert</h2> | + | |
| - | <p>Hallo <strong>{INV_FIRSTNAME} {INV_NAME}</strong>,<br /> | + | |
| - | Vielen Dank für deine Bestellung. Du erhälst eine Benachrichtigung an <strong>{EMAIL}</strong> sobald uns Deine Bezahlung von PayPal bestätigt wurde.</p> | + | |
| - | <p>Deine Bestellnummer lautet: <strong>{ORDER}</strong>. Bitte verwende die Nummer bei Rückfragen.</p> | + | |
| - | <!--PAYPAL_ORDER_DONE_END//--> | + | |
| - | <!--PAYPAL_ORDER_DEBUG_START//--> | + | ==== #4: Zusammenfassung ==== |
| - | <h2>Paypal Fehler</h2> | + | Jetzt müßte \\ |
| - | <p><strong>{DEBUG_MSG1} </strong></p> | + | a. die Zahlart PayPal Auswahl im Shop verfügbar sein |
| - | <p><strong>{DEBUG_MSG2} </strong></p> | + | b. der Shop innerhalb seiner normalen Parameter funktionieren |
| - | <!--PAYPAL_ORDER_DEBUG_END//--> | + | c. eine Weiterleitung geschehen (höchstwahrscheinlich fehlerhaft!) |
| - | </code> | + | |
| \\ | \\ | ||
| + | Sollte eine der oben aufgeführten Punkte nicht zutreffen gibt es ein Problem. Kontrollier bitte noch einmal ganz genau die Punkt eins bis drei. | ||
| \\ | \\ | ||
| \\ | \\ | ||
| - | ==== #6: Beheben des Steuerbug ==== | ||
| - | Zwar gibt es unter Shop > Produkte die Möglichkeit zu bestimmen ob ein Preis in brutto oder netto vorliegt. Die Erweiterung wertet dies jedoch nicht aus sondern geht standardmäßig von einem Netto-Preis aus. Das bedeutet PayPal rechnet noch einmal die Mehrwertsteuer oben drauf. Diese Erweiterung beseitigt das unerwünschte Verhalten. \\ | ||
| \\ | \\ | ||
| - | **ACHTUNG:** Hier wäre eine Abfrage wünschenswert die anhand der Erfassung im Backend entscheidet ob Artikel mit oder ohne MwSt. an Paypal übergeben werden muß. Der folgende Core-Hack erfordert **alle** Produkte des Shops als Brutto. \\ | + | ==== #5: config.inc.php ==== |
| - | \\ | + | Mit großer Wahrscheinlichkeit ist die Weiterleitungen beim Abschliessen des Bestellprozesses fehlerhaft. Die Parameter $phpwcms['machine_alias'] und $phpwcms['site_domain'] existieren Standardmäßig nicht und sollten in die config.inc.php nachgetragen werden. |
| - | Vorgehensweise: Quick&Dirty wird die Tax-Zeile aus der Übergabe an PayPal entfernt. \\ | + | Konkret wäre das: |
| - | \\ | + | <code> |
| - | <code php|h Suche in paypal.class.php: |h> | + | $phpwcms['site_domain'] = 'domain.de'; // ohne www oder subdomain |
| - | foreach ($this->fields as $name => $value) { | + | $phpwcms['machine_alias'] = 'alias'; // www oder subdomain |
| - | echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n"; | + | |
| - | } | + | |
| - | </code> | + | |
| - | <code php|h Ersetze die Funktion mit: |h> | + | |
| - | foreach ($this->fields as $name => $value) { | + | |
| - | //remove tax from data-output + q23.media 23102011 | + | |
| - | if (substr($name, 0, 3) != 'tax') { | + | |
| - | echo "<input type=\"hidden\" name=\"$name\" value=\"$value\"/>\n"; | + | |
| - | } | + | |
| - | } | + | |
| </code> | </code> | ||
| + | \\ | ||
| + | In diesem Zusammenhang auch die frontend.render.php => function validateReferrer() einsehen und verstehen was da passiert! | ||