[PHP] pakt POST variabelen niet (voor GA eCommerce)?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi allemaal,

Ik ben geen PHP-expert, dus het is mogelijk dat ik eenvoudige dingen niet weet of over het hoofd zie. Ik sta open voor alle feedback. Ik zou dit probleempje heel graag oplossen.

Wat ik probeer te doen: We hebben een website, gebruiken een shopping cart (1ShoppingCart), en we willen dat deze netjes de informatie van een verkoop naar Google Analytics stuurt nadat een klant iets koopt. Hiervoor gebruiken we een "Thank You"-pagina die we zelf hosten.

Ik heb hiervoor al het een en ander ingesteld, alles zou moeten werken. De code op de Thank You pagina is de volgende:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<head><!-- Google Analytics and ECommerce-->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-XXXXXX-1']);
_gaq.push(['_trackPageview']);
_gaq.push(['_setAllowHash', false]);
_gaq.push(['_addTrans',
'<?php echo $_POST["orderID"]; ?>', // order ID - required
'Site naam', // affiliation or store name
'<?php echo $_POST["grandTotal"]; ?>', // total - required
'<?php echo $_POST["tax"]; ?>', // tax
'<?php echo $_POST["shippingAmount"]; ?>', // shipping
'<?php echo $_POST["city"]; ?>', // city
'<?php echo $_POST["state"]; ?>', // state or province
'<?php echo $_POST["country"]; ?>' // country
]);
// this will loop through the items in the shopping
// cart and pass the item info to Google
<?php
$i = 1;
do
{
// print out necessary analytics code for each product
echo " _gaq.push(['_addItem',",
"'".$_POST['orderID']."',", // order ID - required
"'".$_POST['sku'.$i]."',", // SKU/code - required
"'".$_POST['product'.$i]."',", // product name
"'',", // category or variation
"'".$_POST['price'.$i]."',", // unit price - required
"'".$_POST['quantity'.$i]."']);\n"; // quantity - required
$i++;
}
while($_POST['price'.$i] != ''); ?>
//submits transaction to the Analytics servers
_gaq.push(['_trackTrans']);
(function() {
var ga = document.createElement('script');
ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' :'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(ga, s);
})();
</script>
</head>


Deze heb ik ergens anders vandaag geplukt en aangepast voor onze website. In de body stond niets meer dan "Thank you".

Wel nu, ik heb een testkoop gedaan, om te checken of het werkte. Het werkte niet.

Om te kijken wat er dan gebeurd was ging ik naar "Bron weergeven" op de Thank You pagina, en daarin werd het volgende weergegeven:
screenshot "bron weergeven"
Hier houdt mijn kennis op. Want deze bron heeft niks met het PHP-bestand te maken dat ik geschreven heb. Er stond wel heel netjes alle informatie in die ik zou willen gebruiken (alles was ingevuld, heb uitgevlakt). Misschien is dit normaal, maar dat weet ik dus niet.

Met "Element Inspecteren" in Chrome zag ik het volgende:
screenshot "Element Inspecteren"

Hier blijkt dus dat de POST variabelen niet opgepakt worden door de PHP-code. Terwijl, gezien het feit dat alle variabelen netjes onder elkaar staan in de screenshot "bron weergeven", deze variabelen wel doorgegeven waren. (Verder staat er weer allerlei javascript code waar ik verder niks van weet.) Het enige wat ik wil is dat de POST variabelen worden neergezet in de Google Analytics tracking code.

Acties:
  • 0 Henk 'm!

Verwijderd

print_r($POST) gebruiken zodat je kunt zien wat precies wel en niet gesubmit wordt.

Acties:
  • 0 Henk 'm!

  • naam
  • Registratie: Oktober 2007
  • Laatst online: 13:07
Verwijderd schreef op donderdag 14 juni 2012 @ 10:03:
print_r($POST) gebruiken zodat je kunt zien wat precies wel en niet gesubmit wordt.
Als je xdebug gebruikt var_dump($_POST); deze geeft een veel duidelijker leesbaar overzicht.

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Wordt er wel ge-POST naar die Thank You-pagina?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Veel dank voor jullie reacties.

Als ik print_r($_POST); doe dan krijg ik dit terug: "Array ( )".


Als ik op de Thank You pagina in Chrome op "Pagina bron weergeven" klik, dan staat er het volgende in de zogenaamde bron:

HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<body onload="SubmitForm()">

  <form id="form1" method="POST">

    <input type="hidden" name="orderID" value="XX" />

    <input type="hidden" name="name" value="X" />

    <input type="hidden" name="company" value="" />

    <input type="hidden" name="email1" value="X" />

    <input type="hidden" name="address1" value="X" />

    <input type="hidden" name="address2" value="" />

    <input type="hidden" name="city" value="X" />

    <input type="hidden" name="state" value="" />

    <input type="hidden" name="zip" value="X" />

    <input type="hidden" name="country" value="X" />

    <input type="hidden" name="fax" value="" />

    <input type="hidden" name="phone" value="+X" />

    <input type="hidden" name="secondaryphone" value="" />

    <input type="hidden" name="cardtype" value="X" />

    <input type="hidden" name="shipname" value="X" />

    <input type="hidden" name="shipCompany" value="" />

    <input type="hidden" name="shipAddress1" value="X" />

    <input type="hidden" name="shipAddress2" value="" />

    <input type="hidden" name="shipCity" value="X" />

    <input type="hidden" name="shipState" value="" />

    <input type="hidden" name="shipZip" value="X" />

    <input type="hidden" name="shipCountry" value="X" />

    <input type="hidden" name="status" value="X" />

    <input type="hidden" name="sku1" value="X" />

    <input type="hidden" name="product1" value="X" />

    <input type="hidden" name="quantity1" value="X" />

    <input type="hidden" name="price1" value="X" />

    <input type="hidden" name="plist" value="X" />

    <input type="hidden" name="Total" value="X" />

    <input type="hidden" name="grandTotal" value="X" />

    <input type="hidden" name="adtrack" value="X" />

  </form>

</body>



Ik heb de waardes veranderd naar X'en, maar alle waarden kloppen. Betekent dit niet dat de POST-waarden wel zijn doorgegeven naar de Thank You pagina?

(En kan iemand mij vertellen waarom ik de code hierboven zie als ik "Paginabron weergeven" kies in Chrome, terwijl dit nergens terug te vinden is in de ThankYou.php? Is dit een normale manier waarop POST variabelen worden doorgegeven?)

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 17:50

DukeBox

loves wheat smoothies

Wat geeft $_REQUEST ?

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
$_REQUEST gedaan. Dat geeft wat Wordpress login/settings informatie en utmx, utmxx, utm, enz. met getallen erachter. De POST waarden die ik wil staan er niet tussen.

Acties:
  • 0 Henk 'm!

  • Manuel
  • Registratie: Maart 2008
  • Laatst online: 17:22
naam schreef op donderdag 14 juni 2012 @ 10:25:
[...]

Als je xdebug gebruikt var_dump($_POST); deze geeft een veel duidelijker leesbaar overzicht.
Zelfs zonder xdebug geeft var_dump meer informatie weer dan print_r. Print_r is alleen bedoelt voor array's, var_dump voor elke type.
Verwijderd schreef op donderdag 14 juni 2012 @ 18:19:
Veel dank voor jullie reacties.

Als ik print_r($_POST); doe dan krijg ik dit terug: "Array ( )".
In andere woorden: er wordt geen POST richting de "Thank You"-pagina gedaan, daarom is _POST ook leeg. (Aangenomen dat je ook echt debugged op de "Thank You"-pagina).

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik had dit allemaal op de Thank You pagina gedaan na een test aankoop ja.

Het enige wat ik dan nog niet weet is waarom die html-code hierboven in de broncode kan staan, als ik Paginabron Weergeven in Chrome doe. Die code waarin alle variabelen die ik nodig heb netjes vermeld wordt. Waar komt dat vandaan?

Acties:
  • 0 Henk 'm!

  • Damic
  • Registratie: September 2003
  • Laatst online: 17:59

Damic

Tijd voor Jasmijn thee

Doe dit eens
PHP:
1
2
3
4
5
6
7
8
9
10
_gaq.push(['_addTrans',
'<?php echo $_POST["orderID"]; ?>', 
'Site naam',
'<?php echo $_POST["grandTotal"]; ?>',
'<?php echo $_POST["tax"]; ?>',
'<?php echo $_POST["shippingAmount"]; ?>',
'<?php echo $_POST["city"]; ?>',
'<?php echo $_POST["state"]; ?>', 
'<?php echo $_POST["country"]; ?>'
]);
en dit:
PHP:
1
2
3
4
5
6
7
echo " _gaq.push(['_addItem',",
"'".$_POST['orderID']."',",
"'".$_POST['sku'.$i]."',",
"'".$_POST['product'.$i]."',",
"'',",
"'".$_POST['price'.$i]."',",
"'".$_POST['quantity'.$i]."']);\n";


In je 2de stuk zit trouwens een fout, de php previewer doet het niet.

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
@TS Pak er een debugproxy bij als Charles (kun je gratis proberen) en kijk waar die waarden blijven. Ik vermoed dat die gegevens worden verwerkt en simpelweg een redirect doet naar de bedanktpagina. Door die redirect gaan logischerwijs dan je POST-variabelen verloren.

[ Voor 19% gewijzigd door Cartman! op 14-06-2012 21:17 ]


Acties:
  • 0 Henk 'm!

  • azerty
  • Registratie: Maart 2009
  • Laatst online: 18:11
Dus je zegt dat er op die thank-you pagina een form staat met al die waardes in velden ingevuld? Hoe worden deze server-side ingevuld? Je zou, als je javascript met je google tracking code op diezelfde pagina staat, natuurlijk ook met javascript die form velden kunnen uitlezen, lijkt me al even gemakkelijk.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Even iets heel anders dat je probleem niet gaat oplossen maar wat wel heel belangrijk is: doe eens netjes escapen voor Javascript als je die $_POST-variabelen afdrukt. Mensen kunnen nu heel makkelijk javascript inserten in je pagina met alle risico's van dien. Zoek eens op cross site scripting en code injection.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • wjzijderveld
  • Registratie: Augustus 2005
  • Laatst online: 23-08 10:55
Ik ken 1ShoppingCart niet, maar bij de meeste webshops zal je geen formulier posten naar de bedank pagina.
Dat jij een formulier ziet als je bron-weergeven doet, zal ermee te maken hebben, dat je een bedank pagina meestal niet los kan oproepen. De webshop verwijst je na een betaling naar die pagina, maar als je die ververst (wat je in feite ook doet als je bron-weergeven doet), zal je de webshop je waarschijnlijk doorsturen naar het bestelformulier.

Wat jij wilt, zal iets lastiger zijn dan een paar POST variabelen uitlezen. Je zal de gegevens van de bestelling ergens vandaan moeten halen. Hoe je dat moet doen, zal je uit de documentatie van 1ShoppingCart moeten halen.
Ik vermoed dat 1ShoppingCart wel het order-object beschikbaar stelt op de bedank pagina waarmee je veel van de informatie mogelijk kan achterhalen.

Canon EOS60D | Canon 100mm f/2.8 USM | Canon 100-400mm f/4.5-5-6L | Canon 10-22mm f/3.5-4.5 USM | Canon 430EX II

Pagina: 1