php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 19-07-2007, 19:17
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard POST un cUrl

Hallo,

ich öffne eine Seite mit Curl so:

PHP-Code:
            // Verbindung zur zuöffnenden Seite herstellen
            
$cUrl curl_init();
            
curl_setopt($cUrlCURLOPT_URL$this->theUrl);
            
curl_setopt($cUrlCURLOPT_HEADER1);
            
curl_setopt($cUrlCURLOPT_RETURNTRANSFER1);
            
curl_setopt($cUrlCURLOPT_HTTP_VERSIONCURL_HTTP_VERSION_1_0);
            
curl_setopt($cUrlCURLOPT_TIMEOUT$this->timeout);
            
// ... Proxy vorhanden? Wenn ja über diesen öffnen
            
if ($this->theProxy)
                
curl_setopt($cUrlCURLOPT_PROXY$this->theProxy);
            
$pageContent       curl_exec($cUrl);
            
// ... Fehler aufgetreten
            
if (curl_error($cUrl))
            {
                
$this->AddError(curl_error($cUrl));
                return;
            }
            
// ... schließen
            
curl_close($cUrl); 
danach trenn ich den Header und Body aus der Variable $pageContent und geb den Body aus.

soweit geht das alles auch. wenn die aufzurufende Seite allerdings ein abzuschickendes Formular ist per POST, müsste ich das in Curl irgendwie integrieren, damit mir dieses auch zur Verfügung steht.

mit curl_slist_append() kann ich, glaube ich, ja den Header beeinflussen. kennt jemand ein schnippsel wo alle POST übergaben, an curl übergeben wird?

danke!
Mit Zitat antworten
  #2 (permalink)  
Alt 19-07-2007, 19:19
penizillin
 PHP Guru
Links : Onlinestatus : penizillin ist offline
Registriert seit: Feb 2004
Beiträge: 10.166
penizillin ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
wenn die aufzurufende Seite allerdings ein abzuschickendes Formular ist per POST, müsste ich das in Curl irgendwie integrieren, damit mir dieses auch zur Verfügung steht.
und jetzt noch mal verständlich.
Mit Zitat antworten
  #3 (permalink)  
Alt 19-07-2007, 19:34
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich will POST-Variablen an CURL weiterleiten...
aber ich habe jetzt CURLOPT_POSTFIELDS gefunden, probier es jetzt erstmal damit.
Mit Zitat antworten
  #4 (permalink)  
Alt 19-07-2007, 20:34
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Schön das auch du die Manual lesen kannst.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #5 (permalink)  
Alt 19-07-2007, 21:08
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

So, hab ich gelöst. POST funzt soweit bis auf File-Uploads.
PHP-Code:
            if ($this->responseMethod == 'POST')
            {
                
$postfields = array();
                foreach (
$_POST as $key => $value)
                    
$postfields[$key] = $value;
                foreach (
$_FILES as $key => $value)
                    
$postfields[$key] = '@'.$value["name"];
                
curl_setopt ($cUrlCURLOPT_POST1);
                
curl_setopt ($cUrlCURLOPT_POSTFIELDS$postfields);
            } 
Ich bekomm die Fehlermeldung : failed creating formpost data

im tut steht das es da ein bug gibt und ich diesen mit realpath($value["name"]) lösen könnte, was aber nicht funktioniert.

kennt jemand die lösung für das problem?
Mit Zitat antworten
  #6 (permalink)  
Alt 20-07-2007, 09:14
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich werd hier noch verrückt...ich google rum und probiere wie ein wilder, finde aber keine Lösung.

Die $_POST-Variable bekomm ich in die aufzrufende Seite, aber die $_FILES-Variable ist leer.

Kennt jemand eine Lösung?

Ich habs bis jetzt so:
PHP-Code:
           if ($this->responseMethod == 'POST')
            {
                
$postfields = array();
                foreach (
$_POST as $key => $value)
                    
$postfields[$key] = urlencode($value);
                if (!empty(
$_FILES))
                {
                    foreach (
$_FILES as $key => $value)
                        if ((
trim($key) != "") && (trim($value) != ""))
                            
$postfields[$key] = "@".urlencode($value["name"]);
                }
                
curl_setopt($cUrlCURLOPT_POSTFIELDS$postfields);
            } 
bekomme aber immer wieder den Fehler: "failed creating formpost data"...

ich bekomm ne krise...danke!
Mit Zitat antworten
  #7 (permalink)  
Alt 20-07-2007, 10:39
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

so läuft es jetzt, ABER nur wenn ich das TEMP-File angebe.

PHP-Code:
            if ($this->responseMethod == 'POST')
            {
                
$postfields = array();
                foreach (
$_POST as $key => $value)
                    
$postfields[$key] = urlencode($value);
                if (!empty(
$_FILES))
                {
                    foreach (
$_FILES as $key => $value)
                        if ((
trim($value['name']) != "") && (trim($value['tmp_name']) != ""))
                        {
                            
$org_name $value['name'];
                            
$tmp_name realpath($value['tmp_name']);
                            
$postfields[$key] = "@$tmp_name";
                        }
                }
                
curl_setopt($cUrlCURLOPT_POSTFIELDS$postfields);
            } 
jetzt fehlt mir allerdings der originale dateinamen!

Zitat:
Array ( [myupload] => Array ( [name] => phpLbQhZo [type] => application/octet-stream [tmp_name] => /tmp/php7fovgs [error] => 0 [size] => 4400 ) )
kennt sich da keine aus?

Geändert von TriphunEM (20-07-2007 um 10:56 Uhr)
Mit Zitat antworten
  #8 (permalink)  
Alt 20-07-2007, 11:32
xkl1986
 Member
Links : Onlinestatus : xkl1986 ist offline
Registriert seit: May 2007
Ort: NRW
Beiträge: 215
xkl1986 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ich verstehe nicht so ganz wo das Problem liegen soll ?
__________________
"Nicht jeder Mensch kann und soll Programmieren[...]".
Mit Zitat antworten
  #9 (permalink)  
Alt 20-07-2007, 12:58
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

das problem ist das das Array $_FILES so aussehen müsste:
Code:
Array ( [myupload] => Array ( [name] => derDateiname.zip  [type] => application/octet-stream
[tmp_name] => /tmp/php7fovgs [error] => 0 [size] => 4400 ) )
es sieht aber so aus

Code:
Array ( [myupload] => Array ( [name] => phpcJK5gM  [type] => application/octet-stream 
[tmp_name] => /tmp/php7fovgs [error] => 0 [size] => 4400 ) )
also unter [name] sollte der originale dateinamen stehen, aber hier wird ein temporärer erzeugt.

jetzt ist die frage, wie kann ich den originalen Dateinamen in CURL mit übergeben???

Geändert von TriphunEM (20-07-2007 um 17:05 Uhr)
Mit Zitat antworten
  #10 (permalink)  
Alt 20-07-2007, 17:06
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

hat denn niemand eine ahnung? das muss doch machbar sein?
Mit Zitat antworten
  #11 (permalink)  
Alt 20-07-2007, 17:56
xkl1986
 Member
Links : Onlinestatus : xkl1986 ist offline
Registriert seit: May 2007
Ort: NRW
Beiträge: 215
xkl1986 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

PHP-Code:
<?
#### Variabeln
$datei        =    "000001.txt";
$url            =    "http://localhost/Neuer%20Ordner/test3.php";

$postData2 = array();

$postData2'data' ] = "@" realpath($datei);

#### Initieren der cURL verbindung
$ch curl_init();

#### Setzen der cURL Parameter
curl_setopt($chCURLOPT_AUTOREFERERTRUE);
curl_setopt($chCURLOPT_URL$url );
curl_setopt($chCURLOPT_RETURNTRANSFER,1);
curl_setopt($chCURLOPT_POST);
curl_setopt($chCURLOPT_SSL_VERIFYPEER ,FALSE);
curl_setopt($chURL_HTTP_VERSION_1_1,1);
curl_setopt($chCURLOPT_FOLLOWLOCATION,1);
curl_setopt($chCURLOPT_POSTFIELDS$postData2 );

#### Ausf&uuml;hren der HTTP Session
$response curl_exec$ch );

#### Wenn cURL fehler, javascript alert
if(curl_error($ch)){
    echo 
"<script type=\"text/javascript\">
<!-- alert('Es ist ein Fehler aufgetreten:\n\n" 
curl_error($ch) . "'); --></script>";
    exit;
}
#### Response des Server verarbeiten
echo $response;

#### Schließen der cURL verbindung
curl_close($ch);
?>


Array ( [data] => Array ( [name] => 000001.txt [type] => text/plain
 [tmp_name] => C:\xampp\tmp\php1D4.tmp [error] => 0 [size] =>
 3171 ) )
Funktioniert ohne Probleme !!!
__________________
"Nicht jeder Mensch kann und soll Programmieren[...]".
Mit Zitat antworten
  #12 (permalink)  
Alt 20-07-2007, 19:50
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

wo liegt deine datei? auf dem server, wenn ja ist es aber nicht die lösung. weil die datei auf der festplatte liegt und per form auf den server kommt, und dort als datei mit einem temp.namen liegt.

nicht ich, sondern die seite die über curl aufgerufen wird, schickt ein forumlar ab. also kann ich die datei nicht beeinflussen!

???
Mit Zitat antworten
  #13 (permalink)  
Alt 21-07-2007, 18:26
TriphunEM
 Registrierter Benutzer
Links : Onlinestatus : TriphunEM ist offline
Registriert seit: Jun 2003
Beiträge: 549
TriphunEM ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ich lass das tempfile jetzt ins original umbenennen und lösch es nach dem post gleich wieder. das sollte helfen!
Mit Zitat antworten
  #14 (permalink)  
Alt 23-07-2007, 11:32
xkl1986
 Member
Links : Onlinestatus : xkl1986 ist offline
Registriert seit: May 2007
Ort: NRW
Beiträge: 215
xkl1986 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ahh jetzt hab ich dein Problem verstanden du lädst quasi die Datei 2 mal hoch. Mach nach dem Ersten schritt ein move_uploaded_file() und dann sende per cURL an den anderen Server. Jetzt sollte dir der Richtige Name wieder zu Verfügung stehen
__________________
"Nicht jeder Mensch kann und soll Programmieren[...]".

Geändert von xkl1986 (23-07-2007 um 12:19 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:49 Uhr.