Query string

Query string

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Pozdrav,

kako da uz pomoć query string promenljivu sa jednog sajta očitam na drugom, tj., vrednost promenljive?

Citat:$cena = 20;

Ovu cenu na drugom sajtu prikazujem kao

Citat:$price = $cena;

Hvala unapred.



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 25 Jan 2004
  • Poruke: 2784
  • Gde živiš: Niš

Napisano: 15 Okt 2014 21:51

prvi (npr. http://prvi_sajt.com/test.php?cena=54) :
header("Location: http://drugi_sajt.com/test2.php?cena=".$_GET["cena"]);

drugi:
$price = $_GET["cena"];

simple as that ... ako sam te razumeo Very Happy

Dopuna: 15 Okt 2014 21:53

ili bez redirektovanja ali sa više konfiguracije http://php.net/manual/en/book.curl.php



offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Napisano: 15 Okt 2014 22:16

Zdravo Default,

dobijem to sa redirekcijom ali tek kad na redirektovani sajt u adress baru dodam cenu, tj iznos cene

Kad kliknem pa redirektuje na sajt2 , onda dobijem http://SAJT2.com/index.php?cena=

i tek kad u adress baru nakon znaka jednakosti dodam cenu čiji sam iznos definisao na sajtu 1,

pokaže mi vrednost tog nekog paketa koji sam definisao .

Može li kad kliknem na redirekciju da mi odmah očita vrednost koju sam na prvom sajtu zadao kao $cena = 20;

Dopuna: 15 Okt 2014 22:20

Na prvom sajtu sam stavio ovako

<?php header("Location: https://sajt2/index.php?cena=".$_GET["cena"]); $cena = 1; ?>

Dopuna: 15 Okt 2014 22:48

Hvala Default, ovo radi, samo sam bio zaboravio da stavim cenu u $GET Smile

Dopuna: 17 Okt 2014 3:57

Još jedan problem,

trebaju mi variabla iz URL-a koja će očitavati različite cene . Header location je rešenje ako hoću da prosledim ručno samo jednu cenu.

Ali, ako hoću da dobijem različite cene koje se iz baze čitaju za različite pakete, tu nastaje problem. U pitanju je jedan wp membership plugin.

Iako u url zadam varijablu cene npr.,

header("Location: https://SAJT2/CheckoutPaymentInit.php?billing_amount=".$_GET["billing_amount"]);
ne dobijem vrednosti na submitovanju.

Jedino što sam na ovaj način dobio je vrednost paketa kad stavim ?level= pa mi umesto cena ispiše membership level koji je 1 ili 2.

Imaš li predstavu kako bih mogao dobiti vrednosti za ovo?

offline
  • Pridružio: 25 Jan 2004
  • Poruke: 2784
  • Gde živiš: Niš

Paaaa nemam predstavu oko toga šta tačno pokušavaš Bebee Dol

Da li sa tog prvog sajta (sa browsera) prosleđuješ URL (prvom php-u) koji ima vrednosti u sebi za sve to što hoćeš da proslediš drugom sajtu/php-u?
Je li to što si napisao da iz baze dobijaš različite cene znači da nemaš u prethodnom URL-u sve što želiš da proslediš drugom sajtu?
Ako je to slučaj, onda zavisi od implementacije toga što se nalazi u toj bazi i interfejsa sa istom. A takođe i od strukture podataka koju želiš da proslediš (više cena? niz podataka?), u čijem slučaju je možda bolje da prosleđuješ podatke http POST metodom (npr. uz pomoć cURL biblioteke) kako bi lakše formatirao te iste podatke umesto zbutavanja u jedan veliki string Very Happy

Sve u svemu, mogu samo da nagađam šta je tebi potrebno iz te baze od tih pomenutih 'cena za raličite pakete' i kako bi trebalo da dođeš do njih ali svakako to možeš da uradiš pre nego što pošalješ header drugom sajtu.

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Napisano: 17 Okt 2014 14:36

Znam da je nejasno, evo ovako,

sa prvog sajta kad odaberem paket u browseru /adress baru imam naziv paketa tj njegov level

http://localhost/membership/membership-account/membership-checkout/?level=2

na kraju linka kao što vidiš nalazi se level=2 s tim što bih trebao umesto level2 da imam npr ?billing_amount= pa sad ti da pokupi cenu koja je recimo za taj paket 20.00$

onda ide SUBMIT-ovanje Smile

Ako stavim sledeće header("Location: https://SAJT2/lPluginCheckoutPaymentInit.php?level=".$_GET["level"]);

on pokupi vrednost levela koja je ili 1 ili 2 a na drugom sajtu uredno prihvati kroz
$price = $_GET["level"];
i upiše mi 1 ili 2 stim što to upisuje kao cenu , ali bi tu trebalo da uhvati vrednost za cenu ako i na jednom i na drugom sajtu umesto level stavim billing_amount , to je poenta.

Header location prosleđujem iz mog custom gateway ali on odatle ne vidi ako napišem neki stejtment, npr.,
if($level = 1) {            $_GET["billing_amount"] = 10.00;           header("Location: https://SAJT2/lPluginCheckoutPaymentInit.php?billing_amount=".$_GET["billing_amount"]);                    } else {          if($level = 2) {            $_GET["billing_amount"] = 20.00;           header("Location: https://SAJT2/lPluginCheckoutPaymentInit.php?billing_amount=".$_GET["billing_amount"]);                    }       }

Sa ove tačke, on ne vidi vrednost varijable za cenu. Nadam se da je sad malo jasnije, s obzirom da je i wp i taj plugin poprilična skalamerija Smile

Dopuna: 17 Okt 2014 14:41

U zavisnosti od modifikacije stejtmenta iznad , on pokupi prvu ili drugu cenu za sve pakete, a treba da prepozna kad klikneš na prvi , drigi treći paket i u zavisnosti od toga da prosledi i njegovu cenu.

offline
  • Pridružio: 25 Jan 2004
  • Poruke: 2784
  • Gde živiš: Niš

Ok, kapiram, ali isto tako kapiram da sada to nema veze sa prosleđivanjem query stringa, sa njim za sada barataš bez problema, nego imaš problema sa tim da uhvatiš cenu paketa za koji ti je verovatno, kao što si sam i pretpostavio, jedini parametar, pomenuti 'level', koji možeš da koristiš kao uslov na strani servera za dalja grananja i procedure.
Ako možeš da vršiš interakciju sa bazom, koja, pretpostavićemo sadrži podatke o cenama proizvoda, a pride znaš kako da formiraš upit ka bazi koji bi trebalo da se bazira na 'WHERE' klauzuli ako svaki nivo kao odredba (kolona) ima relaciju sa cenom ili je makar u istoj tabeli, onda ne bi trebalo da imaš problema.
Strukturno veći pluginovi u Worpdressu uglavnom kreiraju svoje tabele, ali bi svakako SQL query trebalo da vršiš preko WP API-a (WP_Query klasa ili wpdb ojbekta) iz nekoliko 'olakšaj posao sebi i drugima kasnije' razloga.
Note: Ako plugin ima svoje tabele, mislim da ćeš svakako morati preko $wpdb objekta jer nisam video da WP_Query ima parametre za odabir tabele.

Za kraj, ali verovatno i za novi početak, jedno vrlo bitno pitanje...
Da li je cena proizvoda možda zapisana negde u HTML-u ili nekom Javascript objektu na strani browsera?

Cela procedura bi bila jeftinija za jedan upit ka bazi, manje linija koda a možda čak i zaobilaženja kompletne redirekcije ili upita ka prvom sajtu ukoliko bi podesio CORS (+how to) parametre na drugom sajtu i poslao request pravo na isti. Mada, sve zavisi od toga kakvu interfejs putanju želiš da napraviš, pa ti je možda redirekcija ipak potrebnija, što je naravno još i jednostavnije uz window.location.

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Napisano: 18 Okt 2014 18:29

Hvala druže za odvojeno vreme.

btw, header location bi bilo override rešenje, kad bih znao gde de presretnem iščitavanje odabrane vrednosti...

Da, taj plugin imam svoje tabele i svaki upit treba da ide sa $wpdb , mogu da vršim interakcije sa bazom za prvi sajt, drugi uslovno rečeno sajt je samo API do nečeg trećeg gde se izvršava transakcija , ako me razumeš Wink

Cene su zapisane u bazi, tabelama plugin-a kada sam formirao cene za usluge. E sad , ako misliš na browser , cene vidim u html kroz page source i grupno i kad odaberem neki paket , ako je to bilo pitanje. Ne verujem da se cene upisuju u neke html ili js fajlove ali proveriću.

Ako je cena zapisana u nekom html/js fajlu, koje bi bilo rešenje?

Nisam familijaran sa CORS ali ću pogledati jer me navodiš na pravi put. Nisam te razumeo kad si rekao
Citat:ukoliko bi podesio CORS (+how to) parametre na drugom sajtu i poslao request pravo na isti.

Ako parametre podešavam na drugom sajtu, valjda treba da pošaljem request PRVOM sajtu, odakle i treba da uzmem podatke.

Dalje, ako šaljem requst sa drugog sajta , reci8mo da mogu dobiti cene đuture, ali kako mogu dobiti cenu nekog paketa pre nego je klijent odabrao sa svoje korisničke strane ? TO MI NIJE JASNO Smile

Takođe, još jedna nedoumica ( speaking by myself ) , nisam siguran ni gde treba da postavim query,
imam hiljadu fajlova plugin-a, moj gateway, nekoliko checkout fajlova, isto toliko billing i drugih fajlova etc etc. Smile GUZ - Glavom U Zid

Dopuna: 18 Okt 2014 18:33

Slikovito, to izgleda ovako.



Dopuna: 21 Okt 2014 1:43

@Default,

uspeo sam da dobijem value za cenu tako sam sa forme prosledio link , međutim URL je pokupio podatke iz cele forme.

Ima li varijanta da očistim url da mi ostane samo npr LINK + CENA?

sajt2/xxx.php?billing_amount=10.00

Link sada izgleda sajt2/xxx.php?level=2&billing_amount=10.00&name=perica&cardType=DAJ_MI_PARE itd itd.

offline
  • Pridružio: 25 Jan 2004
  • Poruke: 2784
  • Gde živiš: Niš

Super što si se snašao! Smile
Meni trebalo malo više vremena dok stignem da odgovorim... srry.

Anyway, URL kao i svaki string koji ima neku paternu možeš da očistiš uz pomoć nekoliko PHP string funkcija - http://php.net/manual/en/ref.strings.php
Ali čudno mi je ... zašto bi to radio? Svakako ćeš header url da proslediš kako hoćeš ako ga tako napišeš...
Ili možda hoćeš da link bude očišćen pre nego što je uopšte poslat iz browsera? I to možeš ali mogu samo da nagađam uslove i direktive zbog okruženja. Ako si uspeo da izmeniš formu tako da šalje kompletan input, onda bi trebalo da možeš i da skratiš na samo ta dva željena podatka. Bebee Dol

offline
  • PHP programer
  • Pridružio: 26 Okt 2007
  • Poruke: 1064
  • Gde živiš: u Apache

Napisano: 22 Okt 2014 0:17

Ne sekiraj se , i ja sam se malo družio sa ćerkom, proslavili smo trećeg rođendanka Very Happy

Možda ti je čudno al ja drugi način ne znam s obzirom da ta cena u bazi ima više varijabli, više različitih poziva. Plugin ima svojih 5-6 tabela od kojih su neke members_orders, levels, users etc etc.

Ako skratim formu, onda mi FALE podaci na korisničkoj strani i button CHECKOUT i sl. Smile

Jedino što sam ranije uspeo da dobijem na izlazu iz gateway sa header locations je kad mu stavim nešto tipa $pmpro_currency_symbol . number_format($level->initial_payment, 2) tu mi je pokazivao da je Array, što i jeste jer imam 2,3 cene a to je već niz.

Ali to nije ono što je korisnik izabrao pre checkout-a. KOrisnik izabere neku od cena, tj paketa i samo to i treba da se prosledi. Čisto da vidiš šta je na početku u formi checkout-a
<form id="pmpro_form" class="pmpro_form" action="<?php if(!empty($_REQUEST['review'])) echo pmpro_url("checkout", "?level=" . $pmpro_level->id); ?>" method="post">
to sam mu zamenio sa
<form id="pmpro_form" class="pmpro_form" action="SAJT2/PluginCheckoutPaymentInit.php?billing_amount="  <?php echo wpautop(pmpro_getLevelCost($pmpro_level)); ?> method="post">

E sad , wpautop(pmpro_getLevelCost($pmpro_level)); ovo iščitava i više npr., The price for membership is €10.00 per Month. pa i to moram da skratim da bude samo 10.00

Faktički, spojio sam link SAJT2/PluginCheckoutPaymentInit.php?billing_amount= iz action forme sa
wpautop(pmpro_getLevelCost($pmpro_level));

Znači, ovo sad šaljem direktno iz forme checkout stranice. A LINK HOĆU DA OČISTIM PRE NEGO JE i POSLAT iz browsera jer na drugom sajtu u API-ju imam samo
$price = $_GET["billing_amount"]
pa u BROWSER-u moram imati na kraju linka SAMO ?billing_amount=

Hvala što asistiraš Zagrljaj

Dopuna: 23 Okt 2014 11:32

Ćao drugar @Default,

vodio sam se i onim tvojim da uz pomoć promenljive $level dobijem i druge podatke. Batalio sam formu pa sam se vratio redirekciji sa $level promenljivom.

Uz pomoć malo logike, dobio sam vrednosti paketa. Evo šta sam napisao na CHECKPOINT serveru.I kao što vidiš, stavio sam i tipski i vrednosno...

 $price = $_GET["level"];        $newprice = 10;        $newprice2 = 20; if($price == '1'){        $price = $newprice;            echo $price;         } elseif($price == '2'){        $price = $newprice2;            echo $price;         }

Još samo moram da smislim kako da redirektujem NAZAD na stranicu MEMBERSHIP CONFIRMATION, jer mi prva redirekcija sad neda te neke korisničke stranice al i to ću nekako rešiti.

Ko je trenutno na forumu
 

Ukupno su 607 korisnika na forumu :: 9 registrovanih, 2 sakrivenih i 596 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Acivi, Ageofloneliness, cikadeda, Japidson, JOntra, Ognjen D., pein, TBF1D