JFIF       %%-))-969KKd       %%-))-969KKd! f%eK_.T  v_/n6q>e}&Cx@t7OuqySN%y%tz@ Un(quo{tS]\~LzǚPk;fϛϹ2y-=_z.NWW7DW@'4`3w3rr;hP8B%ַBe]`7Ҽo1e)弆O|4Wk*}7Su[9=U 9 |_+:@}@˵u@ g<4N<@=/ I(~}qq=y- u|. y'`3S+4$e= k4P]M^_Nou*R-,X0EI}m&LtVȱa|R\@ ʟ+YeIlY`XV^HV/c-eb du ̈́_2+DpV ` ^^->t7JydE]I 8:7#j̀iiVbp~o݃[}zwGF@-(RTJY@ Ty}X 1!2AQaq"3BR`r@PSb #4CTs0DU$EFcd?Lc4\K#E1$@CV8OƂZ5g;.141;%]6e laǃpv8)80D1ŌxLgWYc+z%:( w^PtdԣV Z:qDsh W) ͷ+~FO]"բ?eN 4)WREZ;T+}]:FRtI ѱއ>'s_[\qNhK ' ^qJv9 ]ʜ1FMzwF8ѯBIp-g`?si;|Hr%>jOh29-+-gQmBH?3P9e')>[k^OaxtLiS30ҿ6*o--I$ 1 z2+OЪ+i˺,_n3(~}StUMc \xSmGD0jMB06%') #1c6s/iaIɉgC%Yoi**MHЛ=rh ĭ總 E>Jў2+ct/^$[_kAOʕicR4qm#Lw!Squ/:e%~zMBfa|e7PUC|"/)CD\cy gڰF9(?\jU+>Cwl#>x^'a7C}LYX<@X`W8P hۂx͍q֜?de1qe* NDuTm-ߣ y+pUy*9aĺ:P4n$2&BTϵ@ a>v3uc,(uF0jˊ́a~32f2=ήZe[r!F !Bu)b FŌt%41N/֑41n1|> 1^;1=IĖEpq%"{/~M.QWDdUA6~z>kPh2Oi?Uc[`+l;՚':۾ږtoZjQ7\:Z3}~ &ڮRQH{mDq0TaM5i:5sC0x<]=Mp c!C<6]~vpxeH[AmY'iԖ_~ a(Ȕ@+a< w] wbk1#aD 9. ?p$ Qؒi-8S㨸f45t:ʙѾ.{mMshU1k\z^*#It@ v:%#iSZ.{.Vemm,Z3*;HtU8E.v'e ޴ 4WwLDe)jY*R'?wM֣ b+IfO('Y J$o޼ l.蕁~ Y Em>Y^m"r^4w}2PI7R1gV\wtVT׿w'*N{ZGN8qzrM/LO~ O~|ڞ櫮o{\dV斀AJmn E#HQg$!{XM'{u* 4O)>F.";l2z3IJ2?Fh7)rjrv@ AJlУ 0`StpGD&nƒpxΡ}P늿D@cEH҆2[9a}U/biEzu)xYR>߹q (yA~ُp \U\L\6~" U'>GJOP,ko:JGI*٢C8f8굟m#GV̐Cj]}N_]aJulE.+I&y5 6*TGHZRů}efjv"\3/3_hq՝g !ir,ܐv%~*lXccyo) 拏Qp_tT3!,Dur!CH7;9GQQmE:ÑCaƅ;zeij;d+% z#e%gdI9E5BB&۟S"=C(>{֠ ɫNUळiu>;P}حW]ouBmJS0ktRtDm+$ԫU_dq)$ ʃnLGSፑf'vlzP/_]QԂ]ȗ|W\;wTSf!m,ri{w了enP(`*.1i2.}e@;HA&_N᷸1|:Gjڒj~i/֬]1(N +^ bQq:›m*o5Y(.JPV[3ޭj֭j+i(uָ]kV)A/%X Fa?8'o>ꝣKks\_k)S%zDTRw#h#e#1Euk&,Yw+Ap"PIZ*j*Ug">m>|ڇ(#FXzCi9%J'H3Xwi-9s0S`R^֮ YLJz+q^i}i1jLK+ [ NzDSq[+Q'ݖl=s<[iIWz=%}[jɁ֠$$N7IUm83SVŭw)#0$g C26^ʓW<=B>{R)&繻8j3cbbce7TE1r\'}FūLO+KʢXm/=H 6FaRHI^Lȹ83g9CM93쑑nE)=q4I$s'ݠajm]"O>L4Vb;(eHm$֫ӆyYtYYr(<Ɠ2Fm "f֒;Tξu8jZR$b!E*9 yy+V:Dm Œ9@-f*l2#ٿPt#T҂ӵ&;AȃWlf xϜZكfj%bs ,/uN{,Gz*kkP M6f/0[I;S)ml-؉)~q9v`ǣ4gZJ}h&dﺥ#{}uDa7j(I'2OҒMF7 .Ey<$5;2ժTI %)TwG54Ŭ Kb6rG;uq\[8DJ'i$?Pq-ݗs\JGkYO2%}b\9;Tk⾜3%qSd( [O4i'jQՃ &F Ҧ T2!G{N j~:Cz J3|xd(6TZ a b5gfK\I)WYARA(RVE$G8at̖qWq{B:Q^g3QzcAZrH|GMcjb{+)r=>:de:¹[QOe@>ISP1nIq!:3G).!ŶB꠲#0Eb2"Lt4ƺKCGn9P=PeoX8@fղ Gi9k ^aHAV<)GG*k_aUΜWsX4ʷ\%m,W*F}<1E/&NJIʳ:PmeRuń%A<ᶧ2s^s-9$PHw]ZB#[>9Fm*>Ut.HugK9uaAF.%fW&J~$k^S:iގT9_5`_bR`ܒ(8Fa?jMc4Pŭ!VB7 W+߀ i>b٠,]?<{aXgpJ]璹نrV53-)p:,R%>#W۲4K{%L%]ͅP,7"[NI:ܴ- AJr)#"=k#Eoa PP$C>7m_t ڠcJZymA [qwDw|*3(FMۭ\KP-'1WK, suu;~ZaTnyi$A =46i֑AUU"l:gA ]"8&ד<{z&O!WF^XGhViWM\q(*p#Fk?p\Ym*J3B3'%jn+ IG{VcVL-f7 #/u}5bD7XMi!{#b$U]q\RGa ;OZXv^WZ\ܭ( lhSˎ6 V'h GY{49$r8AIȃ#V$HL/~l.]:>29:EkSO%N$Ϋkͯ⫝̸yˮ0mE+IVwuIu>Xj%6@[k)aqJz|؏!Υ֔RP.l@tⵅkZg'5nrqDU^kJBEBfrG)+J$"dB3#ٔk4yQCz9S\8'#/5cˑYO(4dhIM<6BߢJNDZFEgD6vnl|^kr;^hϨ1!ʌ:įZBᝋx|T+'!c t"YH=)"g6-t+.Ur$+ZzRG s*f9_QY4El>DI[}B=>v)iTg[?oWwۿlWG69k{Qx]-*$<-=W¹nUĂ}G4tZ]^Q8m!])SyR)vOR(_Aiϵei#{$hਧ.SLN}߬e}EgZwgAWPBcZÖ']P ;2/hy}1M9Fj'.ӖZy-,r ND|jlC)jqSʚV)]p3;❀[:tBH##HqhZr\j"tG-тtHtB24PJ:w;xI0$ wEQ#)FejK rSw|">Tҙ#2Xc8g,(L`S2 tM>5@<)A71iXSlHڛ9(y4KUu:xARdf5\Zq|m{ӭjI8%. ڟ5pxvqd(9P$#"8CQ NKFۘ;RTPE8^`WãRxL髍{}ġͭ緗Ҍ/<xcKOVy0\{Uk85A07)_uCuopN>~3e e޽ytYnDm3)ܠ&,![y3CcؽK+raޱX~aRbm<wE #+ԺQXfGq+h[71_A* [V٣sCEXb\fNiXNݔz NҲ wrG"+ kлYI`ϼUՄ o9Vc7^[Y"E]W>(GSkt]Gcx~hM`?WV8q w< `bJb̑ NNG[xr̈>Kþ7<7H56pIEKgoE`?4e)ޛ)7M(-4ot}LDG6"qycg~x{>8.,7W_ɦ/nG|MFU^VYpa",BBBH;GC#2JerK*ZIqbIphت݉)c繥ՅVtLnEcf62:;\Rw@{ S5Q $ϑTz;EzFO5Pn.NA<~ҌoXR|Ig$^]A|^_mmҷj8mbMbՅHmvI_MqƊFCq&Б%z>ΧKEAg4y;/0f[|@$SG,h5@0RȁцEH-qm%Kb%Dx:0XNHWIᰵ$G)|^ χ,m,#%6צIpO FDFUH5JKlI>Vxn;ĶY;dZkarnƭaeG< W#9+؄l?jEmDo<~W++0#π*<.ۘZ+H$VfF|J&#N ?*<<⢌՞\.#I: !#Sh-4'F |-[WQFH7 )d`JFCbFɞ9N9vՅW4xPOBHc2a"*90Iv5IGI<hI I*'Ƿ.-m1ȼѹKF2ٷ;*A*T6FDSKsipI tGx f$9 Ǐzf{kd@r:/?(i^b 3)_g;&IEWu̓*2t7qL Ti5, wdXr&Gwmŏy)IJD+iE:v6[=9ʰ;q` =}#q:<>~mFU631TqQ (t2/c~ iK'y˴TlxsF_$ {a8[yfc>Y͘k8&9x\Նڻ{I&7+ fv F=,ꌼcCA[c:麑î6B겦&|mFm㪈Rfw .xJês1?_UnuQGǪ?6wR5b-:q{wK  !1A2Qq"@PRa #03BCSbr4$T`c?K)o<rzѸUL<6K4F̘E¹?Q7 QZtʄSV9iE$m6vU>8_F!zaS# j_4Jzm_bȚ;/:Iq7A9Qڜp͖!QTaOSTQzqS5U{LHOWc;TWUA}YWqUNKURѾĴ:gfYnQ*dv?F6i1G6[H?W*!Wl 8OlE?U$jv<&Rا@TG"X޺51?Ikymc{TLʧA4Y+#a=[#j Ge;@֍Xًv_(uVgJjbէz;5$۱ʡ)zv|eS u̎b{ean<6\;CQ<@΍b{ZM%[*n,z{EZR++e`w޹bh9cWF2ǴU:RMWd架;UJcDtK_G@y5GāYzF 8cWb㖈qw4ecqMis,)',o=ߘq5e-0j.}xNGq?d;D5T Dbng2!zN%i`IJ4]JN Kv ./iLZFOii h=yn%wdԲ:d뉆2 ]|1jnvBV@XkxN_;J Kӯ$ΟVlXm x[0'id =qcamjdӚȹaE4rY26!۩PS#U v{-51~q<'x;Z *'Fg"pojg9l:5W媴txyyUU%`_58Mngv[+jz>XwbIt$]ɞ*{ &b^F=C4ЏZ+ F\pR]9c1b * @@K,\ϔ =0<9N{U^ozﺊ<˒D4p2 ,Ƿ˗:#]j*&*jFTܪTdF@x8׭CX2U&y({9b駴to90\DUaaƏ@J:tš#x]d0pUiJ!Џ_1Ke9s$\t%ZiW-]ZVp[!c8OڋGPmM 'ÈX$I"s)Ȍ[ڦT ׫wJsn$QӨ]dJ[;~ԕ$lŧt}7RU@&778ܷK "$4C^iQ􄆺h(Cg#P QҤ1 7~V=6~8:#7/N5qz=8ȂiEʀJpnx8.9@~1m3sE? :zqGY}:O#yw23$1%m}8`E毑s_PznQ[LF%D;S)י -YW < quTݪҒl>I£$qG,Ȑf=g + `~}m5dO+ipyOfv]ishu*8tx"4n7putfV]D`i=ZHWIwȩ<[.P\xӊF)jbKfzASi{*u#8 9p뚰 H@ff>,`2 L6b8 mw{Hn3|b3Fg1e6C<eH /_~B#L *t0xbS% 웞: Aɔ89hjd[OY墪9sŎzNZ:&Yiu%MGw=Y ]QӍ -u@'p[wK%suԘse^wbiɫ:f䲯4ֶCP JFE32 X;yVeAbFyyX%H ,vgb~Ksʊ&V φ 5f̅2K7ZVԎBLǑ=zv-yq,nȇ'(:8$(rH*!S RI.Lj"9\W>])|›\o?-tEs#678PI:e5n$i0ScudA F(ET lq{讬3 28xۆ1IPԲ v0r$0{[J*cyA 1OQ-3f5;׆!`;mV[g{*d$221VR8jk.aH)7c=BO>~ T77XӇʧ _NاVV:Gye)NKk Ǵ`ՏS=Wy\cu`}@8C2su XqC Պ̜xEU ڭ{$KόI@F؛NLOA$F[X2rĔG L\wE2J3S8IJ2e`A7),b +noĐ<{XA"Lj%W̮RI7=e0O {F 3t6ǽN7aNHmo!_5G/GGz`ǻwl${wzd2X,!a/@X{wh]S MARIJUANA
— DIOS — NO — CREA — NADA — EN — VANO —
Linux vps-ed8565de 5.10.0-32-cloud-amd64 #1 SMP Debian 5.10.223-1 (2024-08-10) x86_64
  SOFT : Apache/2.4.65 (Debian) PHP : 7.4.33
/var/www/mdau-prod/
51.178.36.14

 
[ NAME ] [ SIZE ] [ PERM ] [ DATE ] [ ACT ]
+FILE +DIR
.svn dir drwxr-xr-x 2022-04-21 16:07 R D
PHPMailer dir drwxr-xr-x 2022-04-21 16:06 R D
cron dir drwxr-xr-x 2022-04-21 16:03 R D
css dir drwxr-xr-x 2022-04-21 16:05 R D
doc dir drwxr-xr-x 2022-04-21 16:03 R D
external dir drwxr-xr-x 2022-04-21 16:05 R D
filebrowser dir drwxr-xr-x 2022-04-21 16:03 R D
flash dir drwxr-xr-x 2022-04-21 16:03 R D
fonts dir drwxr-xr-x 2022-04-21 16:03 R D
html2pdf dir drwxr-xr-x 2022-04-21 16:06 R D
images dir drwxr-xr-x 2022-04-21 16:06 R D
js dir drwxr-xr-x 2022-04-21 16:03 R D
kcfinder dir drwxr-xr-x 2022-04-21 16:14 R D
mailjet dir drwxr-xr-x 2022-04-21 16:03 R D
paidfiles dir drwxr-xr-x 2022-04-21 16:03 R D
res dir drwxr-xr-x 2022-04-21 16:07 R D
tmp dir drwxr-xr-x 2022-04-21 16:04 R D
.htaccess 0.173 KB -rw-r--r-- 2022-04-21 16:03 R E G D
.htaccess.php.txt 0.171 KB -rw-r--r-- 2022-04-21 16:03 R E G D
__tmp_jdh.php 0.92 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_comments_places.php 4.162 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_debug.php 0.36 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_mailing.php 0.177 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_orders.php 5.386 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_subscriptions.php 2.694 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_tickets_content.php 3.86 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_translations.php 0.953 KB -rw-r--r-- 2022-04-21 16:03 R E G D
admin_ui_text_ressources.php 2.393 KB -rw-r--r-- 2022-04-21 16:03 R E G D
book0.pdf 904.991 KB -rw-r--r-- 2022-04-21 16:03 R E G D
book1.pdf 947.171 KB -rw-r--r-- 2022-04-21 16:03 R E G D
calendars.php 12.304 KB -rw-r--r-- 2022-04-21 16:03 R E G D
channel.html 0.08 KB -rw-r--r-- 2022-04-21 16:03 R E G D
config.php 0.943 KB -rw-r--r-- 2022-04-30 19:14 R E G D
config.php~ 0.945 KB -rw-r--r-- 2022-04-21 16:03 R E G D
daemon_unlock.php 0.399 KB -rw-r--r-- 2022-04-21 16:03 R E G D
db_mdau_r2_7.sql 0.002 KB -rw-r--r-- 2022-04-21 16:03 R E G D
debug.php 1.647 KB -rw-r--r-- 2022-04-21 16:03 R E G D
debug_config.php 0.327 KB -rw-r--r-- 2022-04-21 16:03 R E G D
debug_config.tmp~ 0.326 KB -rw-r--r-- 2022-04-21 16:03 R E G D
dl.php 1.35 KB -rw-r--r-- 2022-04-21 16:03 R E G D
favicon.ico 1.123 KB -rw-r--r-- 2022-04-21 16:03 R E G D
fix_mysql.inc.php 9.955 KB -rw-r--r-- 2022-04-30 19:18 R E G D
fix_mysql.inc.php~ 9.926 KB -rw-r--r-- 2022-04-30 19:17 R E G D
functions.php 79.561 KB -rw-r--r-- 2022-04-21 16:03 R E G D
functions_private.php 36.764 KB -rw-r--r-- 2022-04-21 16:03 R E G D
functions_private_tickets.php 13.691 KB -rw-r--r-- 2022-04-21 16:03 R E G D
google4ef04b8d6b35a6e6.html 0.052 KB -rw-r--r-- 2022-04-21 16:03 R E G D
index.php 30.722 KB -rw-r--r-- 2022-04-30 19:08 R E G D
index.php~ 30.687 KB -rw-r--r-- 2022-04-21 16:03 R E G D
orders3.php 2.442 KB -rw-r--r-- 2022-04-21 16:03 R E G D
paypal.php 1.285 KB -rw-r--r-- 2022-04-21 16:03 R E G D
paypal2.php 4.668 KB -rw-r--r-- 2022-04-21 16:03 R E G D
pickfile.php 1.655 KB -rw-r--r-- 2022-04-21 16:03 R E G D
rgpd.php 33.243 KB -rw-r--r-- 2022-04-21 16:03 R E G D
robots.txt 0.023 KB -rw-r--r-- 2022-04-21 16:03 R E G D
shop.php 36.81 KB -rw-r--r-- 2022-04-21 16:03 R E G D
testmj.php 0.281 KB -rw-r--r-- 2022-04-21 16:03 R E G D
trackers.php 3.815 KB -rw-r--r-- 2022-04-21 16:03 R E G D
REQUEST EXIT
©TheAlmightyZeus
Si on clique sur "Valider la commande" -> Etape 2 Etape 2. /valider_ma_commande.html (qui, à l'aide de la table "urls", renvoie vers : /?f=shop_orderValidation) On peut y cliquer sur "Payer par Paypal" -> Etape 3 Etape 3. /?f=shop_orderConfirmed On enregistre la commande dans la table "orders", et on affiche la confirmation de sa commande à l'utilisateur */ define("FREE_SHIPPING_BEFORE", "2014-01-01"); function shop_shippingFees() { global $db_link; if (($order = tracker_get("order")) === false) $order = array(); if (new DateTime() < new DateTime(FREE_SHIPPING_BEFORE)) return 0.0; if (isset($order["items"])) { $nbPhysicalItems = 0; $products = array(); $q_product = mysql_query("SELECT * FROM products", $db_link); while ($a_product = mysql_fetch_assoc($q_product)) $products[$a_product["id_product"]] = $a_product; foreach ($order["items"] as $id_product) if ($products[$id_product]['physicalDelivery']) $nbPhysicalItems++; if ($nbPhysicalItems == 0) { return 0.0; } else if ($nbPhysicalItems == 1) { return 3.5; } else if (($nbPhysicalItems == 2) or ($nbPhysicalItems == 3)) { return 4.5; } else if (($nbPhysicalItems >= 4) and ($nbPhysicalItems <= 6)) { return 9.0; } else { return 12.0; } } else return 0.0; } function shop_init() { } function shop_itemsTotal() { global $db_link; if (($order = tracker_get("order")) === false) $order = array(); $total = 0.0; $products = array(); $q_product = mysql_query("SELECT * FROM products", $db_link); while ($a_product = mysql_fetch_assoc($q_product)) $products[$a_product["id_product"]] = $a_product; if (isset($order["items"])) foreach ($order["items"] as $id_product) $total += $products[$id_product]["EUR"]; return $total; } function shop_total() { return shop_itemsTotal() + shop_shippingFees(); } /* Supprime l'item $p du panier (= update le tracker "order") */ function shop_removeItem($p) { global $ui_text_ressources, $tracker_recognized, $shop_forms_shippingAddress, $site_url; if (!$tracker_recognized) location(getFunctionUrl("shop") . "?fb=cookiesDisabled"); if (($order = tracker_get("order")) === false) $order = array(); if (isset($order["items"]) and (is_numeric($p)) and (isset($order["items"][$p]))) { unset($order["items"][$p]); tracker_set("order", $order); } location($site_url . "/" . getFunctionUrl("shop")); } // Page d'accueil de la boutique MDAU function shop() { global $ui_text_ressources, $tracker_recognized, $shop_forms_shippingAddress, $db_link; if (!$tracker_recognized) location(getFunctionUrl("shop") . "?fb=cookiesDisabled"); if (($order = tracker_get("order")) === false) $order = array(); $products = array(); $q_product = mysql_query("SELECT * FROM products ORDER BY id_product", $db_link); while ($a_product = mysql_fetch_assoc($q_product)) $products[$a_product["id_product"]] = $a_product; public_head ( "Boutique Mon deal avec l'Univers", "", "boutique", '' ); ?>
Panier

$v) { ?>
 X
Transport Offert ! €'; ?>  
Total  


France métropolitaire uniquement, autres destinations, nous contacter

Frais de port offerts jusqu'au
31/12/2013 inclu !
Cookies désactivés dans le navigateur
Vous ne pouvez valider un panier vide !

Description de l'ouvrage



Ce livre est disponible

Ajouter au panier
Acheter sur Amazon







Description de l'ouvrage


Ce livre est disponible

Acheter sur bookelis
Acheter sur Amazon
Ajouter au panier
Ajouter au panier







Description de l'ouvrage


Ce livre est disponible

Ajouter au panier
Acheter sur Amazon














' ); $products = array(); $q_product = mysql_query("SELECT * FROM products p, ui_text_ressources u WHERE label = id", $db_link); while ($a_product = mysql_fetch_assoc($q_product)) $products[$a_product["id_product"]] = $a_product; $produits = ''; $expedition = 0; foreach ($order["items"] as $id_product) { $produits .= '
  • '.$products[$id_product]['fr'].'
  • '; if ($products[$id_product]['physicalDelivery']) $expedition = 1; } ?>

    Merci pour votre commande !

    Merci de votre commande, vous pouvez désormais télécharger vos produits :
    Votre commande vous sera expédiée dans les meilleurs délais.

    '; $liens = ''; $q_product = mysql_query("SELECT * FROM downloadlinks WHERE id_order = ".$order['id'], $db_link); while ($a_product = mysql_fetch_assoc($q_product)) { $id_product = $a_product['product']; $liens .= '
  • Télécharger "'.$products[$id_product]['fr'].'"
  • '; } if ($liens != '') { // Texte original : "Voici vos documents téléchargeables (ces liens sont valables 30 minutes) :" echo 'Pour télécharger vos document, cliquez sur le lien (valable 30 minutes) :
      '.$liens.'
    '; } ?>


    NOW()"); if (!$a_hash = mysql_fetch_assoc($q_hash)) die('Erreur : le lien est incorrect ou a expiré.'); // Contrôle du numéro de commande et de l'IP source if (($order['id'] != $a_hash['id_order']) or ($a_hash['ipFrom'] != $_SERVER['REMOTE_ADDR']) ) { location($site_url . "/" . getFunctionUrl("shop")); } // Arrivé ici, on a bien contrôlé le lien de téléchargement, on peut lancer l'opération ! mysql_query("UPDATE downloadlinks SET nbclicks = nbclicks + 1 WHERE id = " . $a_hash['id']); $q_product = mysql_query("SELECT * FROM products WHERE id_product = " . $a_hash['product'], $db_link); if (!$a_product = mysql_fetch_assoc($q_product)) die('Erreur : le produit '.$a_hash['product'].' n\'existe pas !'); if ($a_product['filename'] == '') die('Erreur : aucun fichier à télécharger pour le produit '.$a_hash['product'].' !'); if (!file_exists($a_product['filename'])) die('Erreur : le fichier pour le produit '.$a_hash['product'].' n\'existe pas !'); header('Content-Type: application/octet-stream'); header("Content-Transfer-Encoding: Binary"); header("Content-disposition: attachment; filename=\"" . basename($a_product['filename']) . "\""); readfile($a_product['filename']); // do the double-download-dance (dirty but worky) die(); } /* Nous sommes de retour de Paypal avec un paiement confirmé. Nous enregistrons donc la commande dans la base (table "orders"). Nous redirigeons finalement l'utilisateur vers la page de confirmation, qui lui résume sa commande. */ function shop_orderConfirmed() { global $db_link, $ui_text_ressources, $site_url, $PAYPAL_ACCOUNT, $tracker_recognized; if ( (!$tracker_recognized) or (($order = tracker_get("order")) === false) or (!isset($order["paypal"]["TOKEN"])) or ($order["paypal"]["TOKEN"] == "") ) location($site_url . "/" . getFunctionUrl("shop")); debug_print("orderConfirmed"); $h_curl = curl_init(); $url = '?USER=' . $PAYPAL_ACCOUNT["username"] . '&PWD=' . $PAYPAL_ACCOUNT["password"] . '&SIGNATURE=' . $PAYPAL_ACCOUNT["signature"] . '&METHOD=' . 'GetExpressCheckoutDetails' . '&VERSION=' . "109" . '&TOKEN=' . $order["paypal"]["TOKEN"]; curl_setopt($h_curl, CURLOPT_URL, PAYPAL_NVP . $url); curl_setopt($h_curl, CURLOPT_HTTPGET, 1); curl_setopt($h_curl, CURLOPT_RETURNTRANSFER, 1); parse_str(curl_exec($h_curl), $paypal_return_0); curl_close($h_curl); debug_print($paypal_return_0); $order["paypal"]["PAYERID"] = $paypal_return_0["PAYERID"]; $h_curl = curl_init(); $url = '?USER=' . $PAYPAL_ACCOUNT["username"] . '&PWD=' . $PAYPAL_ACCOUNT["password"] . '&SIGNATURE=' . $PAYPAL_ACCOUNT["signature"] . '&METHOD=' . 'DoExpressCheckoutPayment' . '&VERSION=' . $PAYPAL_ACCOUNT["version"] . '&PAYERID=' . $order["paypal"]["PAYERID"] . '&PAYMENTACTION=' . "order" . '&PAYMENTREQUEST_0_CURRENCYCODE=' . 'EUR' . '&PAYMENTREQUEST_0_AMT=' . str_replace(",", ".", strval(shop_total())) . '&TOKEN=' . $order["paypal"]["TOKEN"]; curl_setopt($h_curl, CURLOPT_URL, PAYPAL_NVP . $url); curl_setopt($h_curl, CURLOPT_HTTPGET, 1); curl_setopt($h_curl, CURLOPT_RETURNTRANSFER, 1); parse_str(curl_exec($h_curl), $paypal_return_1); curl_close($h_curl); debug_print($paypal_return_1); if ($paypal_return_1["ACK"] == "Success") { $products = array(); $q_product = mysql_query("SELECT * FROM products", $db_link); while ($a_product = mysql_fetch_assoc($q_product)) $products[$a_product["id_product"]] = $a_product; $status = 2; // Par défaut, une commande est marquée comme "Expédié" s'il n'y a aucun produit physique foreach ($order["items"] as $id_product) if ($products[$id_product]['physicalDelivery']) $status = 0; // A expédier $sql = "INSERT INTO orders VALUES (" . "0, " . "'" . mysql_real_escape_string( serialize( array( "general" => $paypal_return_0, "confirmation" => $paypal_return_1, "remarks" => $order["remarks"], "email" => $order["email"], "name" => $order["name"] ) ) , $db_link ) . "', " . "'" . mysql_real_escape_string(serialize($order["items"]), $db_link) . "', ".$status.", ''" . ")"; $q = mysql_query ($sql, $db_link); $id_order = mysql_insert_id($db_link); $order['id'] = $id_order; if ($e = mysql_error($db_link)) debug_print(array($e, __LINE__, $sql)); debug_print("Sending a mail: " . mail ( (DEBUG_REALLY_SEND_MAIL ? EMAIL : DEBUG_EMAIL), '[Site] Nouvelle commande', 'Nouvelle commande confirmée sur le site' )); // Génération du/des liens uniques de téléchargement foreach ($order["items"] as $id_product) if (!$products[$id_product]['physicalDelivery']) { $sql = "INSERT INTO downloadlinks (`id_order`, `product`, `hash`, `expiration`, `ipFrom`, `nbclicks`) VALUES (" . intval($id_order) . ", " . intval($id_product) . ", " . "'" . sha1(md5(rand(0,999999).uniqid())) . "', " . "DATE_ADD(NOW(), INTERVAL 30 MINUTE), " . "'".mysql_escape_string($_SERVER['REMOTE_ADDR'])."',0" . ")"; $q = mysql_query ($sql, $db_link); } } else { // Erreur à la validation de la commande location($site_url . "/" . getFunctionUrl("shop")); } debug_print(print_r($order), true); tracker_set("last_finalized_order", $last_finalized_order = $order); tracker_set("order", $order = array()); location($site_url . "/commande-confirmee.html"); } function shop_changeItemQty() { global $db_link, $site_url, $current_locale; if ( !isset($_POST["id_product"]) or !is_numeric($_POST["id_product"]) or !isset($_POST["qty"]) or !is_numeric($_POST["qty"]) ) die("ERREUR"); $q = mysql_query("SELECT * FROM products WHERE id_product=" . $_POST["id_product"] . " AND active=1"); if (mysql_num_rows($q) != 1) die("ERREUR"); if (($order = tracker_get("order")) === false) $order = array(); $order["items"][$_POST["id_product"]] = round($_POST["qty"]); tracker_set("order", $order); location($site_url . "/" . getFunctionUrl("shop")); } function shop_addToCart($p) { global $tracker_recognized, $db_link, $current_locale, $site_url; if (!is_numeric($p)) die("ERREUR"); // A FAIRE if ($tracker_recognized) { if (($order = tracker_get("order")) === false) $order = array(); // A FAIRE :: vérifer que le produit est actif $order["items"][] = $p; tracker_set("order", $order); } location($site_url . "/" . getFunctionUrl("shop")); die("xx"); } /* Page de confirmation de la commande / Le client peut y cliquer sur Paypal S'il fait ça, il est emmené vers /?f=shop_paypalRedirect */ function shop_orderValidation() { global $db_link, $ui_text_ressources, $site_url, $url_suffix; if ( (($order = tracker_get("order")) === false) ) location($site_url . "/" . getFunctionUrl("shop")); if (isset($_GET["fb"])) $fb = $_GET["fb"]; else $fb = ""; if (!isset($order["items"]) or (count($order["items"]) == 0)) location($site_url . "/" . getFunctionUrl("shop")); $q_product = mysql_query("SELECT * FROM products"); while ($a_product = mysql_fetch_assoc($q_product)) $products[$a_product["id_product"]] = $a_product; public_head( $ui_text_ressources[58], "résumé", "boutique", '' ); if (!isset($order["email"])) $order["email"] = ""; if (!isset($order["name"])) $order["name"] = ""; if (!isset($order["remarks"])) $order["remarks"] = ""; ?>

    Confirmation de votre commande

     ">Modifier ma commande

    $v) { echo '"; } } ?>
    Article Tarif
    '; echo $ui_text_ressources[$products[$order["items"][$i]]["label"]]; echo ''; echo number_format($products[$order["items"][$i]]["EUR"], 2) . " €"; echo "
    Transport Offert !
    Total

    Adresse e-mail *
    "/>
    Champ à vérifier


    Nom *
    "/>
    Champ à vérifier


    Question de sécurité : ' . $l_op . " + " . $r_op . " = "; ?>
    Champ à vérifier



    Remarques particulières

    M'inscrire à la Newsletter
     
    Securise par PayPal

    Si vous préférez un autre moyen de règlement, n'hésitez pas à nous contacter
















    $ui_text_ressources[$products[$id_product]['label']], 'amt' => $products[$id_product]['EUR'] , 'qty' => 1, 'digital' => 0)); return $items; } function shop_pp_SetExpressCheckout($itemlist, $shipping) { global $PAYPAL_ACCOUNT, $site_url; $items = ''; $digitalonly = 1; $amount = 0.0; $c = 0; foreach($itemlist as $itm) { $items .= '&L_PAYMENTREQUEST_0_NAME'.$c.'='.rawurlencode($itm['title']) . '&L_PAYMENTREQUEST_0_AMT'.$c.'='.str_replace(",", ".", number_format($itm['amt'], 2)) . '&L_PAYMENTREQUEST_0_QTY'.$c.'='.intval($itm['qty']) . '&L_PAYMENTREQUEST_0_ITEMCATEGORY'.$c.'=Physical'; // Le paramètre "Digital" est possible aussi mais il faut avoir l'accord de Paypal pour vendre des produits dématérialisés. $amount = bcadd($amount, bcmul($itm['amt'], intval($itm['qty']), 2), 2); if (!$itm['digital']) $digitalonly = 0; $c++; } // echo "SetExpressCheckout()\n"; $h_curl = curl_init(); $url = PAYPAL_NVP . '?USER=' . $PAYPAL_ACCOUNT["username"] . '&PWD=' . $PAYPAL_ACCOUNT["password"] . '&SIGNATURE=' . $PAYPAL_ACCOUNT["signature"] . '&METHOD=' . 'SetExpressCheckout' . '&VERSION=' . "109" . '&PAYMENTREQUEST_0_AMT=' . str_replace(",", ".", number_format($amount+$shipping, 2)) . '&PAYMENTREQUEST_0_CURRENCYCODE=' . 'EUR' . '&PAYMENTREQUEST_0_PAYMENTACTION=' . 'SALE' . '&PAYMENTREQUEST_0_DESC=' . rawurlencode('Mon Deal avec l\'Univers') . '&ALLOWNOTE=' . '1' . '&LANDINGPAGE=' . 'Billing' . '&PAYMENTREQUEST_0_ITEMAMT=' . str_replace(",", ".", number_format($amount, 2)) . '&PAYMENTREQUEST_0_SHIPPINGAMT=' . str_replace(",", ".", number_format($shipping, 2)) // . '&PAYMENTREQUEST_0_TAXAMT=' . str_replace(",", ".", number_format((shop_total()-shop_shippingFees())*(1-(1/1.196)), 2)) . '&GIFTMESSAGEENABLE=' . '0' . '&GIFTRECEIPTENABLE=' . '0' . '&GIFTWRAPENABLE=' . '0' . '&GIFTWRAPAMOUNT=' . '0.00' . '&REQCONFIRMSHIPPING=' . '0' . '&NOSHIPPING=' . $digitalonly . '&TOTALTYPE=' . 'Total' . $items . '&cancelUrl=' . $site_url . "/boutique.html" . '&returnUrl=' . $site_url . "/?f=shop_orderConfirmed"; curl_setopt($h_curl, CURLOPT_URL, $url); curl_setopt($h_curl, CURLOPT_HTTPGET, 1); curl_setopt($h_curl, CURLOPT_RETURNTRANSFER, 1); parse_str(curl_exec($h_curl), $paypal_return); curl_close($h_curl); debug_print($url); debug_print($paypal_return); $token = $paypal_return["TOKEN"]; // TODO: en cas d'erreur ?? return $token; } /* Le client a cliqué sur "Payer par Paypal". Il arrive alors ici. Cette fonction initialise une session Paypal, qui nous renvoie un token Paypal, stocké dans le tracker["order"]["paypal"]["TOKEN"] */ function shop_paypalRedirect() { global $PAYPAL_ACCOUNT, $site_url, $tracker_recognized, $db_link; if (!$tracker_recognized) location($site_url . "/?fb=cookiesDisabled"); if (($order = tracker_get("order")) === false) location($site_url . "/" . getFunctionUrl("shop")); if (shop_total() == 0.0) location($site_url . "/" . getFunctionUrl("shop") . "?fb=cantValidateAnEmptyCart"); // rgpd if (!isset($_POST["rgpd"])) location($site_url . "/" . getFunctionUrl("shop_orderValidation") . "?fb=invalidRgpd"); if ( (!isset($_POST["email"])) or (!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL)) or ($_POST["email"] == "") ) { $order["email"] = $_POST["email"]; tracker_set("order", $order); location($site_url . "/" . getFunctionUrl("shop_orderValidation") . "?fb=invalidEmail"); } else { $order["email"] = $_POST["email"]; tracker_set("order", $order); } if ( (!isset($_POST["name"])) or ($_POST["name"] == "") ) { $order["name"] = $_POST["name"]; tracker_set("order", $order); location($site_url . "/" . getFunctionUrl("shop_orderValidation") . "?fb=invalidName"); } else { $order["name"] = $_POST["name"]; tracker_set("order", $order); } if (isset($_POST["nl_subscription"]) and ($_POST["nl_subscription"] == "on")) { $q = mysql_query( "INSERT INTO emails VALUES (" . "0, " . "'" . mysql_real_escape_string($_POST["email"]) . "', " . "'" . mysql_real_escape_string($_POST["name"]) . "', " . "1, " . "0)" , $db_link ); if ($e = mysql_error($db_link)) die(__LINE__ . ": $e"); } $order["remarks"] = $_POST["remarks"]; tracker_set("order", $order); if ( (!isset($_POST["l_op"])) or (!isset($_POST["r_op"])) or (!isset($_POST["result"])) or (!is_numeric(intval($_POST["l_op"]))) or (!is_numeric(intval($_POST["r_op"]))) or (!is_numeric(intval($_POST["result"]))) or (intval($_POST["result"]) !== (intval($_POST["l_op"]) + intval($_POST["r_op"]))) ){ location($site_url . "/" . getFunctionUrl("shop_orderValidation") . "?fb=invalidCaptcha"); } $token = shop_pp_SetExpressCheckout(shop_itemList(), shop_shippingFees()); debug_print("Token retourné par Paypal (boutique livres) : " . $token); $order["paypal"]["TOKEN"] = $token; tracker_set("order", $order); location(PAYPAL_URL . "/webscr?cmd=_express-checkout&token=" . $token); }