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, 5069 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Netzwerkmanagement
gelöst Icingaweb2 Werte für das NRPE CheckDisk anpassen (8)

Frage von M.Marz zum Thema Netzwerkmanagement ...

Batch & Shell
gelöst PS Werte CSV-Datei in AD Attribut (3)

Frage von lupolo zum Thema Batch & Shell ...

Batch & Shell
Werte vergleichen die nicht 100 Prozent gleich sind (4)

Frage von functionstrut zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...