Archiv verlassen und diese Seite im Standarddesign anzeigen : Über Formular Nachricht an Twitter posten
TOMillr
01.08.2009, 13:04:59
Hallo zusammen,
da unser Admin "leider" momentan in den Flitterwochen ist, muss ich mich selbst um folgendes Problem kümmern - habe aber bislang nur am Rande mal mit PHP zu tun gehabt.
Möchte für ein kleines Team eine zentrale Portalseite einrichten, welche bei Google Sites liegt und nicht öffentlich zugänglich ist. Dort möchte ich gerne ein Formular einbinden, von dem man direkt und ohne vorher die Benutzerdaten eingeben zu müssen eine Nachricht an Twitter senden kann.
Bei meiner Suche bin ich da z.B. auf ein PHP Script (LINK (http://woork.blogspot.com/2007/10/twitter-send-message-from-php-page.html))gestoßen, welches aber aus ZWEI PHP Dateien besteht und dessen Formular direkt in eine der PHP Files eingebettet ist. Könnte man nicht den Formular Teil aus dem Code herausnehmen, auf die externe Seite bei Google Sites einbinden und von dort die Daten zur Verarbeitung an das PHP File auf unserem Server weiterleiten?
Alternativ habe ich auch den Tipp bekommen, das Posting über "cURL" abzusetzen:
c = curl_init('https://twitter.com/statuses/update.xml');
curl_setopt($c, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($c, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($c, CURLOPT_USERPWD, $user.':'.$pw);
curl_setopt($c, CURLOPT_POST, 1);
curl_setopt($c, CURLOPT_POSTFIELDS, 'status='.urlencode($message));
curl_exec($c);
curl_close($c);
Leider habe ich von diesem "cURL" nun aber leider ÜBERHAUPT keine Ahnung. Kann mir vielleicht jemand einen Vorschlag machen, welche Variante zu bevorzugen und leichter für mich umzusetzen ist?
Danke,
TOM
Damir
01.08.2009, 13:54:28
Hi,
also ich weiß es ja nicht genau aber ist das überhaupt erlaubt bei Twitter, das du die Daten so übertragen willst???
Also Curl ist sicherlich eine sehr gute Möglichkeit. Schau mal hier, da findest du einige Beispiele zu Curl:
http://www.selfphp.de/kochbuch/index.php
Damir
TOMillr
01.08.2009, 16:02:24
also ich weiß es ja nicht genau aber ist das überhaupt erlaubt bei Twitter, das du die Daten so übertragen willst???
Öhm, es gibt doch eine offizielle Twitter API (Link (http://apiwiki.twitter.com/)). Warum sollte dies dann nicht erlaubt sein?
Also Curl ist sicherlich eine sehr gute Möglichkeit. Schau mal hier, da findest du einige Beispiele zu Curl:
Danke, werde ich mich gleich mal einlesen. Aber kann man damit auch von außerhalb des Servers (auf der dann das Formular gehostet wird) auf die entsprechende PHP zugreifen?
Damir
01.08.2009, 16:05:20
Öhm, es gibt doch eine offizielle Twitter API (Link (http://apiwiki.twitter.com/)). Warum sollte dies dann nicht erlaubt sein?
War nur ne Frage - ich twitter nicht ;-) Upps, jetzt habe ich mich geoutet :-)
Danke, werde ich mich gleich mal einlesen. Aber kann man damit auch von außerhalb des Servers (auf der dann das Formular gehostet wird) auf die entsprechende PHP zugreifen?
Letztendlich überträgst du ja nur die Werte per POST oder GET und greifst ja nicht direkt auf PHP zu.
TOMillr
01.08.2009, 17:11:46
War nur ne Frage - ich twitter nicht ;-)
Dann bin ich ja beruhig. Dacht schon ich hätte irgendein juristisches Fettnäpfchen übersehen. ;-)
Letztendlich überträgst du ja nur die Werte per POST oder GET und greifst ja nicht direkt auf PHP zu.
Gut, die CURL Bibliothek läuft auf unserem Server. Nur leider war der "CURL - Die Verbindung zur Aussenwelt" Teil in der von dir verlinkten Übersicht nicht wirklich so aufschlussreich, wie ich diese Bibliothek nun genau verwende.
Ich packe den oben angegeben cURL Code in eine PHP Datei und ergänze dort die entsprechenden Logindaten. Wie genau übergebe ich nun die Daten zur Weiterleitung an die Datei?
Muss ich also einfach ein Formular erstellen, dass dann mit POST die Formularfelder an die PHP Seite auf unserem Server schickt?
TOMillr
02.08.2009, 14:01:07
Habe mich noch ein wenig in die Anleitung eingelesen, gegoogelt und bin dann nun zum Test der Grundfunktion bei folgendem Code gelandet:
<?php
$twitter_api_url = "http://twitter.com/statuses/update.xml";
$twitter_data = "status=Hier kommt die Nachricht für Twitter rein";
$twitter_user = "mein Username";
$twitter_password = "mein Password";
$ch = curl_init($twitter_api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $twitter_data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "{$twitter_user}:{$twitter_password}");
$twitter_data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode != 200) {
echo "<strong>Fehler</strong> Bei Übertragung ist ein Fehler aufgetreten.";
}
?>
Wenn ich die PHP Datei nun auf unserm Server aufrufe, bekomme ich jedoch eine Fehlermeldung:
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in ******.php on line 11
Kann mir jemand die Fehlermeldung erklären und was ich falsch gemacht habe?
feuervogel
02.08.2009, 18:53:33
Habe mich noch ein wenig in die Anleitung eingelesen, gegoogelt und bin dann nun zum Test der Grundfunktion bei folgendem Code gelandet:
<?php
$twitter_api_url = "http://twitter.com/statuses/update.xml";
$twitter_data = "status=Hier kommt die Nachricht für Twitter rein";
$twitter_user = "mein Username";
$twitter_password = "mein Password";
$ch = curl_init($twitter_api_url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $twitter_data);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "{$twitter_user}:{$twitter_password}");
$twitter_data = curl_exec($ch);
$httpcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpcode != 200) {
echo "<strong>Fehler</strong> Bei Übertragung ist ein Fehler aufgetreten.";
}
?>
Wenn ich die PHP Datei nun auf unserm Server aufrufe, bekomme ich jedoch eine Fehlermeldung:
Kann mir jemand die Fehlermeldung erklären und was ich falsch gemacht habe?
das passiert, wenn man blind irgendwelchen code kopiert und/oder keine meldungen liest.
Warning: curl_setopt() [function.curl-setopt]: CURLOPT_FOLLOWLOCATION cannot be activated when in safe_mode or an open_basedir is set in ******.php on line 11
das ist eine warnung und keine fehlermeldung, die besagt, dass du CURLOPT_FOLLOWLOCATION nicht aktivieren kannst. und jetzt suchen wir nach der zeile mit CURLOPT_FOLLOWLOCATION im code und finden:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
wo CURLOPT_FOLLOWLOCATION aktiviert wird und setzen den wert von 1 auf 0 oder löschen die zeile ganz raus.
TOMillr
05.08.2009, 14:53:25
das passiert, wenn man blind irgendwelchen code kopiert und/oder keine meldungen liest.
Genau deshalb habe ich ja auch gefragt. ;-)
wo CURLOPT_FOLLOWLOCATION aktiviert wird und setzen den wert von 1 auf 0 oder löschen die zeile ganz raus.
Gut, wofür war die Zeile denn dann gedacht?
feuervogel
05.08.2009, 15:10:15
öhm...weiß nicht, aber schau doch einfach ins handbuch....
vBulletin® v3.8.3, Copyright ©2000-2024, Jelsoft Enterprises Ltd.