Avatar billede d.kryger Praktikant
21. juli 2008 - 15:22 Der er 9 kommentarer og
1 løsning

Poste til anden side

Hej eksperter.

Jeg har en side hvor jeg skal poste noget af mine data til en ekstern side.

Når brugeren på min side udfylder nogle felter skal det både ligges i min database + det skal postes til en ekstern side, men jeg er i tvivl om hvordan jeg poster til den anden side, så brugeren ikke skal til at "hoppe over på den anden side" for så at blive smidt tilbage når de postede data er behandlet.

Hvordan kan man evt. gøre det?
Avatar billede w13 Novice
21. juli 2008 - 15:29 #1
Hvorfor skulle brugeren blive smidt tilbage? Det bliver han/hun vel kun, hvis du koder det sådan?

En standard POST-form skulle vel gøre tricket.
Avatar billede d.kryger Praktikant
21. juli 2008 - 15:44 #2
Det er muligt, jeg er ikke lige helt med i hvad du mener.
Kan du komme med et eksempel på en standard POST-form?
Avatar billede w13 Novice
21. juli 2008 - 16:29 #3
side1.php:

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

<p>Alder: <input type="text" name="age"></p>

<input type="submit" value="Send">

</form>

---------------------------------------

nyside.php

<?php

if(isset($_POST['age'])){
    echo "Alder: " . $_POST['age'];
}

?>
Avatar billede d.kryger Praktikant
21. juli 2008 - 16:36 #4
Jeg forstå godt ovenstående eksempel, men hvis jeg nu har en side som gør følgende:

- Brugeren indtaster data på side1.php, og klikker på "Send".
- Der bliver postet til side1.php, hvor dataen bliver lagt ned i en sql-database.
- Data'en bliver postet til nyside.php
- side1.php bliver stadig vist i browseren.

Men dit eksempel slutter man jo altså på nyside.php og ikke på side1.php. nyside.php er jo den eksterne side, som jeg ikke har adgang til, men blot skal poste nogle data til.
Avatar billede w13 Novice
21. juli 2008 - 16:39 #5
Så forstår jeg ikke helt, hvad du vil.

Hvad mener du med, at de skal postes til nyside.php, men at side1.php skal vises i browseren?

Og hvis du ikke har adgang til side1.php, er der vel ikke så meget at gøre, for så kan du jo alligevel ikke rette noget.

Uden at forstå problemet, kunne det så løses ved at poste til et nyt vindue ved at sætte target="_blank" på form-tag'et?
Avatar billede j4k0b Nybegynder
21. juli 2008 - 18:12 #6
Jeg tror det er sådan en funktion du skal bruge:
http://www.jonasjohn.de/snippets/php/post-request.htm
---




/*
** The function:
*/

function PostRequest($url, $referer, $_data) {

    // convert variables array to string:
    $data = array();   
    while(list($n,$v) = each($_data)){
        $data[] = "$n=$v";
    }   
    $data = implode('&', $data);
    // format --> test1=a&test2=b etc.

    // parse the given URL
    $url = parse_url($url);
    if ($url['scheme'] != 'http') {
        die('Only HTTP request are supported !');
    }

    // extract host and path:
    $host = $url['host'];
    $path = $url['path'];

    // open a socket connection on port 80
    $fp = fsockopen($host, 80);

    // send the request headers:
    fputs($fp, "POST $path HTTP/1.1\r\n");
    fputs($fp, "Host: $host\r\n");
    fputs($fp, "Referer: $referer\r\n");
    fputs($fp, "Content-type: application/x-www-form-urlencoded\r\n");
    fputs($fp, "Content-length: ". strlen($data) ."\r\n");
    fputs($fp, "Connection: close\r\n\r\n");
    fputs($fp, $data);

    $result = '';
    while(!feof($fp)) {
        // receive the results of the request
        $result .= fgets($fp, 128);
    }

    // close the socket connection:
    fclose($fp);

    // split the result header from the content
    $result = explode("\r\n\r\n", $result, 2);

    $header = isset($result[0]) ? $result[0] : '';
    $content = isset($result[1]) ? $result[1] : '';

    // return as array:
    return array($header, $content);
}



/*
** The example:
*/

// submit these variables to the server:
$data = array(
    'test' => 'foobar',
    'okay' => 'yes',
    'number' => 2
);

// send a request to example.com (referer = jonasjohn.de)
list($header, $content) = PostRequest(
    "http://www.example.com/",
    "http://www.jonasjohn.de/",
    $data
);

// print the result of the whole request:
print $content;

// print $header; --> prints the headers
Avatar billede d.kryger Praktikant
22. juli 2008 - 13:01 #7
j4k0b -> Bingo! Det var lige hvad jeg skulle bruge! Læg et svar og du får dine point! Tak for hjælpen!
Avatar billede j4k0b Nybegynder
22. juli 2008 - 13:10 #8
:-)
Avatar billede d.kryger Praktikant
10. september 2008 - 13:17 #9
Lige et spørgsmål: Når jeg poster en tekst med æ, ø eller å, så modtager den siden jeg poster til kun et '?' i stedet! Hvordan kan jeg ændre det?

Jeg poster til en side om jeg ikke kan redigerer på!
Avatar billede w13 Novice
10. september 2008 - 14:56 #10
Det er problemer med dit tegnsæt. F.eks. hvis du har sat ISO-8859-1 eller (endnu bedre) UTF-8, men mangler at sætte det på nogle af dine sider.

Alle sider, databaser, filer, o.lign. skal være sat til samme tegnsæt. Både meta-tags, indstillinger og encoding.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester