Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

POST-Werte weitergeben

Frage Entwicklung PHP

Mitglied: EinTyp

EinTyp (Level 1) - Jetzt verbinden

26.11.2010, aktualisiert 27.11.2010, 5106 Aufrufe, 17 Kommentare

Hallo Administrator/innen,

Ich habe folgendes Problem:
Ich möchte POST-Werte ohne Formular weitergeben. Gibt es da irgendwelche Möglichkeiten?

Mein Beispiel:

Auf der Home ist ein Formular. Wenn man etwas eingibt und bestätigt wird es mittels POST an meine 'auswertung.php' geschickt. Dort wird es per PHP ausgelesen. Je nachdem was der User eingegeben hat, wird es auf eine von verschiedenen Websites geschickt mit entsprechenden POST-Werten.

Ich hoffe ihr könnt mir helfen.
Vielen Dank im vorraus
mfg -einTyp-
Mitglied: EvilMoe
26.11.2010 um 20:25 Uhr
Hallo,

speicher dir den Wert entweder in einer Datenbank, oder benutze dafür Sessions.

Gruß
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 20:35 Uhr
Also ich kann daraus ziehen, dass meine Wunsch-Methode nicht klappt^^.
Kann ich auch normale Arrays an Websites weitergeben?

@EvilMoe:
Hast du keine einfacheren Methoden?
Bitte warten ..
Mitglied: EvilMoe
26.11.2010 um 20:39 Uhr
Wie meinst du das Arrays an Websites weitergeben?

Session ist recht einfach. Wird behandelt wie ein Array.

01.
session_start(); 
02.
// nun haben wir $_SESSION 
03.
$_SESSION['Foo'] = 'Bar'; 
04.
echo $_SESSION['Username'];
Die Variable Foo wäre nun auf jeder Unterseite verfügbar. Ist das ist doch genau das was du suchst.


Hier mehr Infos: http://tut.php-q.net/de/sessions.html
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 20:55 Uhr
Da gibts bei mir ein Problem. (ich benutze XAMPP)

01.
      session_start();            //Zeile 118 
02.
      $_SESSION['Foo'] = 'Bar';   //Zeile 119 
03.
      echo $_SESSION['Foo'];      //Zeile 120
meine Antwort:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\seite1.php:111) in C:\xampp\htdocs\seite1.php on line 118

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\seite1.php:111) in C:\xampp\htdocs\seite1.php on line 118
string(3) "Bar"
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 20:59 Uhr
was ist eigentlich mit serialize() ???
Ich schaus mir mal an...
Bitte warten ..
Mitglied: EvilMoe
26.11.2010 um 20:59 Uhr
Eine Session kann nur gestartet werden wenn noch KEIN Header gesendet wurde. Das heißt session_start() muss bei jeder Datei in der ersten Zeile stehen in der du Sessions nutzen möchtest.
Bitte warten ..
Mitglied: nxclass
26.11.2010 um 21:10 Uhr
Auszug aus meiner Function Klasse:

01.
    /** 
02.
03.
     */ 
04.
    public static function sendHttpPostRequest($sUrl, $aGet, $aPost, $iPort=80) 
05.
06.
        $aUrl = parse_url($sUrl); 
07.
        $sReferer = $sUrl .'?'. My_Function::createUrl($aGet, true); 
08.
        $sPostData = My_Function::createUrl($aPost, true); 
09.
     
10.
        if ($hSock = fsockopen($aUrl['host'], $iPort)) { 
11.
            // sende die Anfrage 
12.
            fputs($hSock, "POST {$aUrl['path']} HTTP/1.1\r\n"); 
13.
            fputs($hSock, "Host: {$aUrl['host']}\r\n"); 
14.
            fputs($hSock, "Referer: $sReferer\r\n"); 
15.
            fputs($hSock, "Content-type: application/x-www-form-urlencoded\r\n"); 
16.
            fputs($hSock, "Content-length: ". strlen($sPostData) ."\r\n"); 
17.
            fputs($hSock, "Connection: close\r\n\r\n"); 
18.
            fputs($hSock, $sPostData); 
19.
             
20.
            // empfange ggf. eine Antwort 
21.
            if (!feof($hSock)) { 
22.
                while (!feof($hSock)) { 
23.
                    $sResult .= fgets($hSock, 128); 
24.
25.
                $sResult = substr($sResult, strpos($sResult, "\r\n\r\n")+4); 
26.
            } else { 
27.
                $sResult = true; 
28.
29.
            fclose($hSock); 
30.
            return $sResult; 
31.
        } else { 
32.
            // 
33.
            return false; 
34.
35.
    }
EDIT
01.
    /** 
02.
     * Erstellt aus einer Liste eine Url 
03.
     *  
04.
     * @param array $aParam     Liste der Parameter => Werte 
05.
     * @return string           ein Url String 
06.
     */ 
07.
    public static function createUrl($aParam, $bDataOnly=false) 
08.
09.
        $sUrl = ($bDataOnly) ? '' : '?'; 
10.
        if (is_array($aParam)) { 
11.
            $aUrl = array(); 
12.
            foreach ($aParam as $key=>$value) { 
13.
                if (is_array($value)) { 
14.
                    foreach ($value as $entry) { 
15.
                        $aUrl[] = urlencode($key).'[]='.urlencode($entry); 
16.
17.
                } else { 
18.
                    $aUrl[] = urlencode($key).'='.urlencode($value); 
19.
20.
21.
            $sUrl .= implode((($bDataOnly) ? '&' : '&'), $aUrl); 
22.
23.
        return $sUrl; 
24.
    }
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 21:11 Uhr
Wow! Es geht
Kann oder muss man die Sitzung löschen?

Danke!
Bitte warten ..
Mitglied: EvilMoe
26.11.2010 um 21:14 Uhr
Können schon: $_SESSION = array();
Mehr braucht man in der Regel nicht.
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 21:31 Uhr
Das ist jetzt blöd..
Ich kapier den Code nur zum Teil...
Wo soll ich was einfügen, wenn ich eine POST-Anfrage an http://www.domain.de/post.php schicken will.
Mit dem Inhalt:

01.
$_POST = array(3) { 
02.
    [4]=> 
03.
    string(4) "vier" 
04.
    ["Foo"]=> 
05.
    string(3) "bar" 
06.
    ["test_ist"]=> 
07.
    string(8) "gelungen" 
08.
}
Bitte warten ..
Mitglied: EvilMoe
26.11.2010 um 21:35 Uhr
So wie ich das sehe brauchst du nur deinen Array übergeben als Parameter.
Also $aPost = $_POST;
Bitte warten ..
Mitglied: nxclass
26.11.2010 um 21:35 Uhr
wenn Du die oberen Funtionen in eine statische Klasse eingefügt hast:
01.
Klasse::sendHttpPostRequest( 'http://www.domain.de/post.php', null, $_POST);
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 21:44 Uhr
Was sollte da (optimal) passieren?
Bitte warten ..
Mitglied: nxclass
26.11.2010 um 21:56 Uhr
Zuerst werden die URL und die zu übertragenden Daten vorbereitet:
  • die URL wird in seine Bestandteile zerlegt weil wir den HOST und den PATH brauchen
  • die Parameter werden in eine andere Form gebracht ( schlüssel=wert& ...)

Dann wird eine Verbindung aufgebaut und eine HTTP Anfrage gesendet (wie es auch der Browser macht )
  • Header Informationen zuerst
  • dann die POST Daten


Die Bezeichnung 'My_Function' in der sendHttpPostRequest Funktion musst Du noch anpassen - oder Du nutzt diese Funktionen nicht in einer Klasse sondern nur in einer Include -ierten PHP Datei.
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 22:05 Uhr
Meine PHP-Datei is nicht include- iert (oder sowas). Die ist "original".

meine ganzes Skript sieht so aus:

01.
/*public static */function sendHttpPostRequest($sUrl, $aGet, $aPost, $iPort=80) { 
02.
    $aUrl = parse_url($sUrl); 
03.
    $sReferer = $sUrl .'?'. /*My_Function::*/createUrl($aGet, true); 
04.
    $sPostData = /*My_Function::*/createUrl($aPost, true); 
05.
    if ($hSock = fsockopen($aUrl['host'], $iPort)) { 
06.
        fputs($hSock, "POST {$aUrl['path']} HTTP/1.1\r\n"); 
07.
        fputs($hSock, "Host: {$aUrl['host']}\r\n"); 
08.
        fputs($hSock, "Referer: $sReferer\r\n"); 
09.
        fputs($hSock, "Content-type: application/x-www-form-urlencoded\r\n"); 
10.
        fputs($hSock, "Content-length: ". strlen($sPostData) ."\r\n"); 
11.
        fputs($hSock, "Connection: close\r\n\r\n"); 
12.
        fputs($hSock, $sPostData); 
13.
        if (!feof($hSock)) { 
14.
            while (!feof($hSock)) { 
15.
                $sResult .= fgets($hSock, 128); 
16.
17.
            $sResult = substr($sResult, strpos($sResult, "\r\n\r\n")+4); 
18.
        } else
19.
            $sResult = true; 
20.
21.
        fclose($hSock); 
22.
        return $sResult
23.
    } else
24.
        return false; 
25.
26.
27.
 
28.
    /**  
29.
     * Erstellt aus einer Liste eine Url  
30.
     *   
31.
     * @param array $aParam     Liste der Parameter => Werte  
32.
     * @return string           ein Url String  
33.
     */  
34.
/*public static */function createUrl($aParam, $bDataOnly=false)  
35.
{  
36.
    $sUrl = ($bDataOnly) ? '' : '?';  
37.
    if (is_array($aParam)) {  
38.
        $aUrl = array();  
39.
        foreach ($aParam as $key=>$value) {  
40.
            if (is_array($value)) {  
41.
                foreach ($value as $entry) {  
42.
                    $aUrl[] = urlencode($key).'[]='.urlencode($entry);  
43.
                }  
44.
            } else {  
45.
                $aUrl[] = urlencode($key).'='.urlencode($value);  
46.
            }  
47.
        }  
48.
        $sUrl .= implode((($bDataOnly) ? '&' : '&'), $aUrl);  
49.
    }  
50.
    return $sUrl;  
51.
52.
 
53.
$_POST['test'] = "gelungen"
54.
sendHttpPostRequest( 'http://localhost/Netzwerk/seite1.php', null, $_POST);
(Wahrscheinlich sind bei mia 1000 Fehledr drinnen )

Ich hab ein paar Sachhen auskommentiert da sie Fehlermeldungen verursachen (public static). So wie ich es verstanden habe hätte ich das "My_Function::" nicht auskommentieren sollen...

P.S.: Diesmal ist mein Skript ganz leer. Es nur das obige Skript drinnen. Ich will dieses Skript ausführen und dann auf der Seite mit den empfangenen $_POST-Werten auftauchen.
Bitte warten ..
Mitglied: nxclass
26.11.2010 um 22:09 Uhr
ok so ... ein
01.
echo sendHttpPostRequest( 'http://testchat.localhost/Netzwerk/registrierensql.php', null, $_POST);
sollte Dir nun die Ausgabe von http://testchat.localhost/Netzwerk/registrierensql.php anzeigen.

EDIT: obwohl die /* */ innerhalb des Codes schon eigenartig aussehen - am besten jetzt löschen
Bitte warten ..
Mitglied: EinTyp
26.11.2010 um 22:31 Uhr
Vielen Dank!
Es ist genauso wie ich wollte^^

-einTyp-
Bitte warten ..
Ähnliche Inhalte
Microsoft Office
Excel: Wert aus mehreren Datein suchen und zugehörige Werte ausgeben (10)

Frage von RubyLissy zum Thema Microsoft Office ...

Datenbanken
gelöst Hilfe bei MSSQL-Anweisung, Werte in andere Tabelle einfügen (8)

Frage von d4shoerncheN zum Thema Datenbanken ...

Datenbanken
gelöst MYSQL Abfrage Werte summieren (3)

Frage von Ghost108 zum Thema Datenbanken ...

Neue Wissensbeiträge
RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(12)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Heiß diskutierte Inhalte
Windows 10
Windows für Privatanwender "nicht mehr handhabbar" (26)

Frage von FA-jka zum Thema Windows 10 ...

LAN, WAN, Wireless
Brauche Hilfe: Mit (schnellem) WLAN Strecke überbrücken (23)

Frage von pierrehansen zum Thema LAN, WAN, Wireless ...

LAN, WAN, Wireless
Komplett neues Netzwerk, Ubiquiti WLAN, Router, Switch (15)

Frage von Freak-On-Silicon zum Thema LAN, WAN, Wireless ...