» »

[PHP] pošiljanje parametrov

[PHP] pošiljanje parametrov

YuriY ::

Pozdravljeni!

Sem popoln začetnik v PHP-ju in imam eno vprašanje. Naredil sem dve PHP strani. V brskalniku prikazujem vedno samo prvo (ima html) in vsebuje "obrazec" za upload datoteke in pa formo, ki sproži drugo PHP stran (preko radio button izbire in klik na "submit" gumb). Po kliku na gumb "submit" torej zalaufa druga php stran, vendar se ne prikaže (nima html-ja), ampak zadeva zaključi z download dialogom (brskalnik vpraša, kam naj shrani datoteko). Do tukaj vse lepo in prav.

Zanima pa me, ali je možno, da po tem, ko se v ozadju izvede druga PHP stran, poleg izvajanja "download" dialoga pošljem še nekatere parametre na prvo PHP stran in jih tam prikažem? Recimo da bi po shranjevanju datoteke na prvi strani kliknil še en gumb, ki bi potem nekako "prevzel" poslane podatke preko ?? (POST/GET??) nekakšne metode in jih prikazal na strani (gre se za nekaj stringov in števil). Zanima me, ali je to sploh možno narediti samo z uporabo html/php-ja, torej brez javascripta? Hvala!
  • spremenilo: YuriY ()

Ahim ::

Kot si sam ugotovil, jih seveda lahko pošlješ (s POST ali GET requestom, poglej curl). Ce sta obe "strani" res PHP datoteki, ki renderirata HTML (torej da ne gre za nek staticni HTML), potem ne rabis JS, saj PHP lahko tako naredi nov request kakor parsa parametre, ki jih dobi - poglej recimo tole.

YuriY ::

Aha, hvala. Kako pa naredim, da se nek del PHP kode na prvi strani izvede šele po tem, ko se dobi odgovor (POST ali GET) z druge PHP strani? Hvala!

Baja ::

stran1.php
if (isset($_GET['stran2'])){
 // do something
}


stran2.php
//do something
header('Location: stran1.php?stran2=foobar');

YuriY ::

Hvala!

Malo sem se poigral, ampak mi ne dela. Narejeno imam takole:

stran1.php
<?php

if (isset($_GET['test'])){
 echo 'DELUJE!';
}


stran2.php
$curl = curl_init();
	curl_setopt_array($curl, [
		CURLOPT_RETURNTRANSFER => 1,
		CURLOPT_URL => 'https://www.mojaspletna.si/stran1.php?test=123',
		CURLOPT_USERAGENT => 'Codular Sample cURL Request'
	]);
	// Send the request & save response to $resp
$resp = curl_exec($curl);
// Close request to clear up some resources
curl_close($curl);


Kaj bi lahko bilo narobe? Ne razumem pa koncepta ... stran1.php je že naložena, potem sprožim stran2.php ... kaj da "znak" potem, da se koda na strani1.php spet ponovno izvede, da sploh pride do pogoja "isset"? Hvala!

Zgodovina sprememb…

  • spremenilo: YuriY ()

Baja ::

curl_exec izvede stran1.php in shrani rezultat v $resp. izpiši $resp pa bos videl kaj je notri.

ti moraš na novo poklicati stran1.php. torej header('Location: stran1.php?test=123')

YuriY ::

Hvala! Sem že bližje cilju!

Imam 2 vprašanji.

1) V čem je torej poanta da uporabim "curl", ali ne bi lahko samo uporabil funkcijo

header('Location: stran1.php?test=123')
?

Ali ni oboje skupaj redundantno?
CURLOPT_URL => 'https://www.mojaspletna.si/stran1.php?test=123'
header('Location: stran1.php?test=123')


2) Ko preko stran1.php "pokličem" stran2.php, se tale akcija konča z download oknom (stran2.php mi ponudi shranjevanje določene datoteke):

header('Content-Type: application/csv');
header('Content-Disposition: attachment; filename="'.$filename_without.'.bin"');
header('Pragma: no-cache');
readfile('./datoteka/'.$filename_without.'.bin');


Problem je v tem, da če kodo:

header('Location: stran1.php?test=123')


postavim PRED zgornjo kodo, mi brskalnik ne ponudi shranjevanja datoteke, na stran1.php pa se izpiše besedilo "DELUJE!". Če pa jo postavim ZA zgornjo kodo, pa mi shranjevanje datoteke deluje normalno, ampak na stran1.php pa se besedilo "DELUJE!" ne izpiše. Kako naj popravim, da se bo zgodilo oboje? Hvala!

win64 ::

Pozabimo za minutko na PHP.
Preko HTTP-ja narediš EN zahtevek in nazaj boš dobil EN odgovor. Ne moreš z enim zahtevkom dobiti in dokument za pobiranje in HTML dokument za prikaz. Tudi brskalniki seveda tako delujejo.
Pri tem primeru imaš dve možnosti:
1. uporabiš javascript in ajax
2. Z formo kličeš PHP dokument, ki obdela podatke obrazca in ti vrne HTML za zahvalno stran. Na tej zahvalni strani izpišeš tudi povezavo do dokumenta in/ali dodaš recimo značko meta refresh v glavo zahvalne strani, ki vsebuje povezavo do dokumenta.
Če bi rad zaščitil povezavo ali če so v dokumentu podatki iz obrazca, boš moral shraniti v sejo nek identifikator in ga potem preverjati pri pobiranju dokumenta.

YuriY ::

Hvala, sedaj mi je bolj jasno. :)

Sem mislil, da lahko dobiš hkrati oboje, ja ... pač da tale "curl" v ozadju še "osveži" trenutno odprto stran1.php in ji pošlje nove parametre.

Bom pa poizkusil narediti na drug način, ker se ne bi rad učil še javascripta in ajaxa, samo da si postavim 1 enostavno spletno aplikacijo za lastno uporabo. :)

Zgodovina sprememb…

  • spremenilo: YuriY ()

Ahim ::

YuriY je izjavil:

Hvala, sedaj mi je bolj jasno. :)

Sem mislil, da lahko dobiš hkrati oboje, ja ... pač da tale "curl" v ozadju še "osveži" trenutno odprto stran1.php in ji pošlje nove parametre.

Curl naredi klic (request) na nek naslov in dobi nazaj povratne informacije. Tukaj sem te mogoce jaz nekoliko "zavedel", ker sem drugace razumel tvoje vprasanje.

YuriY je izjavil:

Bom pa poizkusil narediti na drug način, ker se ne bi rad učil še javascripta in ajaxa, samo da si postavim 1 enostavno spletno aplikacijo za lastno uporabo. :)

Pa ne bi bilo slabo, ce bi se naucil, saj to pase skupaj in ima vse svojo vlogo. Zdaj renderiras HTML pes v PHPju, kar je izguba (tvojega) casa, itak pa se za to moras tudi nauciti HTML, se pravi si ze na 2/3 poti :)


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[php] 2 odvisni listi/seznama

Oddelek: Izdelava spletišč
191498 (1155) sebavet
»

ASP.NET + C# vprašanje

Oddelek: Programiranje
342796 (1810) Morenov
»

Download vsebine strani s JS

Oddelek: Izdelava spletišč
472567 (1865) MrBrdo
»

PHP in varnost.

Oddelek: Programiranje
283120 (2616) krho
»

[php] Problem z dinamično stranjo

Oddelek: Izdelava spletišč
111558 (1403) Iskraman

Več podobnih tem