webForumDet fria alternativet

POST värdens viderbefordran

PHPur PHP

9 svar · 295 visningar · startad av Gaqzi

Medlem sedan aug. 2002224 inlägg
Frågan#1

Jag skulle behöva skicka 2 POST värden till 6 olika sidor, från ett formulär.

Är det möjligt?
Går det att lösa med t ex popups eller kommer värdena inte hänga på då?

Jag vet inte riktigt vad jag ska söka på..

Medlem sedan jan. 2002341 inlägg
#2

går det inte att lösa med GET istället? eller är det känslig information?

Medlem sedan aug. 2002224 inlägg
#3

jag måste använda post för jag ska skicka till en annan sida som använder miva..

Medlem sedan okt. 20022 inlägg
#4

Hej.

Det finns klassbibliotek med vilka du kan skicka hur många POSTs som helst till vilket skript som helst.

Sök efter 'HTTP POST' så hittar du säkert nåt.

mvh
Dyfa

Medlem sedan dec. 19992 751 inlägg
#5

Eller så använder du ett formulär med dolda text-boxar.

Medlem sedan aug. 2002224 inlägg
#6

Racerankan: Men det är inte en massa textfält utan många sidor jag vill få det till, eller missuppfattar jag dej?

dyfadesign: är det för PHP eller är det generellt för HTTP dokument?

Medlem sedan okt. 20022 inlägg
#7

För PHP.

Du samlar allt du skall skicka i ett formulär, som du postar till ditt skript.

I skriptet kan du sedan skicka de POSTs du vill.

Ex:

(OBS. http_post funktionen måste skapas först...)

http_post("någon_server"
,"/skript.php"
,"array("param1" => "$värde1"
,"param2" => "$värde2");

Sedan måste du kontrollera svaret från servern för att verifiera att det gick vägen.

Lite pyssel, men det blir hur bra som helst...

Kolla manualerna på php.net för mer info.

mvh
Dyfa.

Medlem sedan aug. 2002224 inlägg
#8

så i arrayen så lägger jag in sidorna ska till (jag är inte helsuper på PHP) :)

Medlem sedan okt. 20026 inlägg
#9

Låter som om det vore smidigast att använda sessioner

gör först en form som postar det du vill ha
där läser du in det i $_SESSION så här

start_session();
$_SESSION["value1"] = 'nåt värde du vill ha';
$_SESSION["value2"] = 'vad du nu vill ha med mer för värde';
etc etc..

sen lägger du till start_session();
på dom sidor du vill ha denna information
o så har du det du vill ha i $_SESSION["value1"]; o i value2
eller vad du nu döper det till

Medlem sedan mars 20007 896 inlägg
#10

Behöver du presentera informationen som returneras från de sex sidorna som får POST-värdena? Om inte, kan du göra så här:

<?php
$GLOBALS[ 'errorMessage' ] = "";
$attributes = "";
foreach( $_POST as $key => $value ) {
     if( $attributes != "" )
          $attributes .= "&";

     $attributes .= $key . "=" . $value;
}

function send( $server, $page, $attr, $port = 80 ) {
     $headerString = "POST " . $page . " HTTP/1.1\nHost: " . $server . "\nContent-type: application/x-www-form-urlencoded\nContent-length: " . strlen( $attr ) . "\n\n";

     $socket = fsockopen( $server, $port );
     if( !$socket ) {
          $GLOBALS[ 'errorMessage' ] .= "Couldn't connect to server: " . $server . "\n";
     }
     else {
          fputs( $socket, $headerString . $attr );
     }
     fclose( $socket );
}

send( "www.server1.com", "/sida1.php", $attributes );
send( "www.server2.com", "/sida2.php", $attributes, 65 );
send( "www.server3.com", "/sida3.php", $attributes );

if( $GLOBALS[ 'errorMessage' ] != "" ) {
     echo nl2br( $GLOBALS[ 'errorMessage' ] );
}
else {
     echo "Successfull!";
}
?>

Det borde fungera. Funktionen send() tar som sista paramterer emot porten som ska användas, men det är ingen nödvändig parameter - default är port 80.

131 ms totalt · 3 externa anrop · v20260731065814-full.4bcf49fe
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)