webForumDet fria alternativet

Skicka via typ post?

PHPur PHP

9 svar · 307 visningar · startad av GrodanBoll

Medlem sedan sep. 2001788 inlägg
Frågan#1

Hej hej :)

När man skickar grejjor till andra sidor så lägger man ju ofta variablerna i en länk, men då syns ju variablerna i adressfönstret.
Finns det inte något annat sätt?

Att skicka variablerna som sker vid 'post' hade varit kanon.

Finns det någe bra sätt? :q
Hänger ni på vad jag menar eller e jag bara förvirrad? ;)

/Grodan

Medlem sedan mars 20007 896 inlägg
#2

Du kan ju alltid sätta upp en socket mot websidan och skicka via POST.

Medlem sedan sep. 2001788 inlägg
#3

Swisch sa det när det flög över mitt huvud ;)

Que, va o allt sådant.
Hur gör man sånt?

/Grodan

Medlem sedan mars 20007 896 inlägg
#4

Så här. :)

<?php
$socket = fsockopen ( "www.dinserver.se", 80, $errorNr, $errorStr, 25 );

if ( !$socket ) {
     echo "Felnummer: " . $errorNr . "<br />";
     echo "Fel: " . $errorStr . "<br />";
     exit;
}

fputs ( $socket, "POST /dinSida.php HTTP/1.1\n" );
fputs ( $socket, "Host: [url]www.dinserver.se\n[/url]" );
fputs ( $socket, "Content-Type: application/x-www-form-urlencoded\n" );
fputs ( $socket, "Content-Length: " . $längdenPåData . "\n\n" );
fputs ( $socket, $Data . "\n" );
// $längdenPåData är hur byte som du ska skicka. ( Ta reda på med strlen ()
// $Data är din information som ska skickas.

// Ta emot data som returneras, dvs. sidan, här md fgets ()
fclose ( $socket );
?>

Kika på mitt script som söker i andras sökmotorer här.
Funktionen search () innehåller allt som du behöver veta. :)

Medlem sedan sep. 2001788 inlägg
#5

Bugar o tackar för svaren SPiN men det verkar ju jättekrångligt (tycker jag iaf, som den nybörjare jag e).

Finns det verkligen inte någe annat sätt att skicka variabler till en annan sida utan att få med dem i adressfältet eller att bygga upp ett fomulär?

Jag vill ju ha ett lätt sätt ;)

/Grodan :)

Medlem sedan juni 20008 205 inlägg
#6

Nej. Det finns inga lätta sätt.

Medlem sedan feb. 20001 050 inlägg
#7

Finns det verkligen inte någe annat sätt att skicka variabler till en annan sida utan att få med dem i adressfältet eller att bygga upp ett fomulär?

Varför inte använda sessions?

/nicclas - https://www.frisim.com

Medlem sedan okt. 2001538 inlägg
#8

Ok, jag medger jag kan ha läst heeelt fel och vara ute och cykla komplett, men om man inte vill att variablerna skall synas i adressfältet (som det gör då man använder

<form method="get" action="sida2.php">

) kan man inte bara använda

<form method="post" action="sida2.php">

?
Jag menar, då syns ju inte variablerna i adressfältet, och det är bara att hämta ut dem i sida2.php, eller?

Ber om ursäkt om jag inte hajjat, men är det inte bara något sådant som efterfrågas?

MVH Patrik

Medlem sedan mars 20007 896 inlägg
#9

Jag visar med en liten kodsnutt:
Sida1.php

<?php
$variabel1 = $_POST[ 'variabelEtt' ];
$variabel2 = $_POST[ 'variabelTva' ];
?>
<html>
<form action="Sida2.php" method="POST">
Var 1: <input type="text" name="var1" /><br />
Var 2: <input type="text" name="var2" /><br />
<input type="submit" value="Skicka!" />
</form>
</html>

Sida2.php

<?php
$variabel1 = $_POST[ 'var1' ];
$variabel2 = $_POST[ 'var2' ];

if ( $variabel1 == "" || $variabel2 == "" ) {
     $socket = fsockopen ( "www.dinserver.se", 80, $errorNr, $errorStr, 25 );

     if ( !$socket ) {
          echo "Felnummer: " . $errorNr . "<br />";
          echo "Fel: " . $errorStr . "<br />";
          exit;
     }

     fputs ( $socket, "POST /Sida1.php HTTP/1.1\n" );
     fputs ( $socket, "Host: [url]www.dinserver.se\n[/url]" );
     fputs ( $socket, "Content-Type: application/x-www-form-urlencoded\n" );

     if ( $variabel1 == "" ) { // Skicka tillbaka $variabel2 då den var satt
          fputs ( $socket, "Content-Length: " . strlen ( $variabel2 ) . "\n\n" );
          fputs ( $socket, "variabelTva=" . $variabel2 . "\n" );
     }
     if ( $variabel2 == "" ) {  // Skicka tillbaka $variabel1 då den var satt
          fputs ( $socket, "Content-Length: " . strlen ( $variabel1 ) . "\n\n" );
          fputs ( $socket, "variabelEtt=" . $variabel1 . "\n" );
     }

     while ( !feof ( $socket ) ) {
          echo fgets ( $socket, 128 ); // Läser 128 tecken i taget och skriver ut dem
     }

     fclose ( $socket );
}

echo "Variabel1 var satt. Värde: " . $variabel1 . "<br />";
echo "Variabel2 var satt. Värde: " . $variabel2 . "<br />";
?>

Helt otestat, men det borde fungera som du vill. :)

Medlem sedan sep. 2001788 inlägg
#10

Bugar o tackar för alla svaren :)

Tackar för din förklaring sist SPiN, nu har det allt klarnat lite för mig. Ska allt testa det lite, återkommer om jag får problem :)

Tack igen alla :birp

/Grodan

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