PSD-Tutorials.de
Forum für Design, Fotografie & Bildbearbeitung
Tutkit
Agentur
Hilfe
Kontakt
Start
Forum
Aktuelles
Besonderer Inhalt
Foren durchsuchen
Tutorials
News
Anmelden
Kostenlos registrieren
Aktuelles
Suche
Suche
Nur Titel durchsuchen
Von:
Menü
Anmelden
Kostenlos registrieren
App installieren
Installieren
JavaScript ist deaktiviert. Für eine bessere Darstellung aktiviere bitte JavaScript in deinem Browser, bevor du fortfährst.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder einen
alternativen Browser
verwenden.
Antworten auf deine Fragen:
Neues Thema erstellen
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Links automatisch mittel tinyurl.com generieren
Beitrag
<blockquote data-quote="Christian" data-source="post: 1493836" data-attributes="member: 3735"><p><strong>AW: Links automatisch mittel tinyurl.com generieren</strong></p><p></p><p>Hatte da mal was geschrieben:</p><p>[php]<?php</p><p></p><p></p><p>/**</p><p> * @version $Id: class.httpconnection.php 200 2009-11-06 08:54:05Z Christian $</p><p> */</p><p>/*</p><p>httpconnection.class.php</p><p>Version 1.1</p><p></p><p>Part of the PHP class collection</p><p>http://www.sourceforge.net/projects/php-classes/</p><p></p><p>Written by: Dennis Wronka</p><p>License: LGPL</p><p>*/</p><p>class httpconnection</p><p>{</p><p> private $host;</p><p> private $port;</p><p> private $ssl;</p><p> private $useragent;</p><p> public function __construct ($host, $port = 80, $ssl = false, $useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4')</p><p> {</p><p> $this->host = $host;</p><p> $this->port = $port;</p><p> $this->ssl = $ssl;</p><p> $this->useragent = $useragent;</p><p> }</p><p> private function decodereply ($reply)</p><p> {</p><p> $headend = strpos($reply, "\r\n\r\n") + 2;</p><p> $head = substr($reply, 0, $headend);</p><p> $httpversion = substr($head, 5, 3);</p><p> $contentlength = '';</p><p> $contentlengthstart = strpos($head, 'Content-Length:');</p><p> if ($contentlengthstart != false) {</p><p> $contentlengthstart += 16;</p><p> $contentlengthend = strpos($head, "\r\n", $contentlengthstart);</p><p> $contentlength = substr($head, $contentlengthstart, $contentlengthend - $contentlengthstart);</p><p> }</p><p> if ($httpversion == '1.0') {</p><p> $datastart = $headend + 2;</p><p> $body = substr($reply, $datastart, strlen($reply) - $datastart);</p><p> } elseif ($httpversion == '1.1') {</p><p> $encoding = '';</p><p> $encodingstart = strpos($head, 'Transfer-Encoding:');</p><p> if ($encodingstart != false) {</p><p> $encodingstart += 19;</p><p> $encodingend = strpos($head, "\r\n", $encodingstart);</p><p> $encoding = substr($head, $encodingstart, $encodingend - $encodingstart);</p><p> }</p><p> if ($encoding == 'chunked') {</p><p> $datasizestart = $headend + 2;</p><p> $datasizeend = strpos($reply, "\r\n", $datasizestart);</p><p> $datasize = hexdec(trim(substr($reply, $datasizestart, $datasizeend - $datasizestart)));</p><p> $body = '';</p><p> while ($datasize > 0) {</p><p> $chunkstart = $datasizeend + 2;</p><p> $body .= substr($reply, $chunkstart, $datasize);</p><p> $datasizestart = $chunkstart + $datasize + 2;</p><p> $datasizeend = strpos($reply, "\r\n", $datasizestart);</p><p> $datasize = hexdec(trim(substr($reply, $datasizestart, $datasizeend - $datasizestart)));</p><p> }</p><p> } else {</p><p> $datastart = $headend + 2;</p><p> $datasize = $contentlength;</p><p> $body = substr($reply, $datastart, $datasize);</p><p> }</p><p> }</p><p> $code = substr($head, 9, 3);</p><p> $serverstart = strpos($head, 'Server:') + 8;</p><p> $serverend = strpos($head, "\r\n", $serverstart);</p><p> $server = substr($head, $serverstart, $serverend - $serverstart);</p><p> $contenttype = '';</p><p> $contenttypestart = strpos($head, 'Content-Type:');</p><p> if ($contenttypestart != false) {</p><p> $contenttypestart += 14;</p><p> $contenttypeend = strpos($head, "\r\n", $contenttypestart);</p><p> $contenttype = substr($head, $contenttypestart, $contenttypeend - $contenttypestart);</p><p> }</p><p> $location = '';</p><p> $locationstart = strpos($head, 'Location:');</p><p> if ($locationstart != false) {</p><p> $locationstart += 10;</p><p> $locationend = strpos($head, "\r\n", $locationstart);</p><p> $location = substr($head, $locationstart, $locationend - $locationstart);</p><p> $location_array = explode('?', $location);</p><p> $parameters = '';</p><p> if (isset($location_array[1])) {</p><p> $parameters = $location_array[1];</p><p> }</p><p> $location = array('uri' => $location_array[0] , 'parameters' => $parameters);</p><p> if (empty($parameters)) {</p><p> unset($location['parameters']);</p><p> }</p><p> }</p><p> $cookies = array();</p><p> $cookiestart = stripos($head, 'Set-Cookie:');</p><p> while ($cookiestart != false) {</p><p> $cookiestart += 12;</p><p> $cookieend = strpos($head, "\r\n", $cookiestart);</p><p> $cookie = substr($head, $cookiestart, $cookieend - $cookiestart);</p><p> $cookie_array = explode(';', $cookie);</p><p> $expirydate = '';</p><p> $path = '';</p><p> for ($x = 0; $x < count($cookie_array); $x ++) {</p><p> $cookie_array[$x] = explode("=", $cookie_array[$x]);</p><p> if ($x == 0) {</p><p> $name = $cookie_array[$x][0];</p><p> $value = $cookie_array[$x][1];</p><p> } else {</p><p> if (trim($cookie_array[$x][0]) == 'expires') {</p><p> $expirydate = array('string' => $cookie_array[$x][1] , 'timestamp' => strtotime($cookie_array[$x][1]));</p><p> } elseif (trim($cookie_array[$x][0]) == 'path') {</p><p> $path = $cookie_array[$x][1];</p><p> }</p><p> }</p><p> }</p><p> $cookie = array('name' => $name , 'value' => $value , 'path' => $path , 'expirydate' => $expirydate);</p><p> if (empty($path)) {</p><p> unset($cookie['path']);</p><p> }</p><p> if (empty($expirydate)) {</p><p> unset($cookie['expirydate']);</p><p> }</p><p> $cookies[] = $cookie;</p><p> $cookiestart = stripos($head, 'Set-Cookie:', $cookieend);</p><p> }</p><p> $headdata = array('raw' => $head , 'httpversion' => $httpversion , 'code' => $code , 'server' => $server , 'contentlength' => $contentlength , 'contenttype' => $contenttype , 'location' => $location , 'cookies' => $cookies);</p><p> if ((empty($contentlength)) && ($contentlength != 0)) {</p><p> unset($headdata['contentlength']);</p><p> }</p><p> if (empty($contenttype)) {</p><p> unset($headdata['contenttype']);</p><p> }</p><p> if (empty($location)) {</p><p> unset($headdata['location']);</p><p> }</p><p> if (empty($cookies)) {</p><p> unset($headdata['cookies']);</p><p> }</p><p> $data = array('head' => $headdata , 'body' => $body);</p><p> return $data;</p><p> }</p><p> public function head ($uri = '/', $parameters = false, $cookies = false, $authuser = '', $authpassword = '')</p><p> {</p><p> if ($this->ssl == true) {</p><p> $connection = @fsockopen('ssl://' . $this->host, $this->port);</p><p> } else {</p><p> $connection = @fsockopen($this->host, $this->port);</p><p> }</p><p> if ($connection == false) {</p><p> return false;</p><p> }</p><p> if ((empty($uri)) || ($uri{0} != '/')) {</p><p> $uri = '/' . $uri;</p><p> }</p><p> if (($parameters != false) && (! empty($parameters))) {</p><p> $paramstring = '?' . $parameters;</p><p> } else {</p><p> $paramstring = '';</p><p> }</p><p> if (($cookies != false) && (! empty($cookies))) {</p><p> $cookiestring = 'Cookie: ' . $cookies . "\r\n";</p><p> } else {</p><p> $cookiestring = '';</p><p> }</p><p> if (! empty($authuser)) {</p><p> $authstring = 'Authorization: Basic ' . base64_encode($authuser . ':' . $authpassword) . "\r\n";</p><p> } else {</p><p> $authstring = '';</p><p> }</p><p> $host = $this->host;</p><p> if ($this->port != 80) {</p><p> $host .= ':' . $this->port;</p><p> }</p><p> fwrite($connection, 'HEAD ' . $uri . $paramstring . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n\r\n");</p><p> $reply = '';</p><p> while (! feof($connection)) {</p><p> $reply .= @fread($connection, 128);</p><p> }</p><p> fclose($connection);</p><p> $data = $this->decodereply($reply);</p><p> return $data;</p><p> }</p><p> public function get ($uri = '/', $parameters = false, $cookies = false, $authuser = '', $authpassword = '')</p><p> {</p><p> if ($this->ssl == true) {</p><p> $connection = @fsockopen('ssl://' . $this->host, $this->port);</p><p> } else {</p><p> $connection = @fsockopen($this->host, $this->port);</p><p> }</p><p> if ($connection == false) {</p><p> return false;</p><p> }</p><p> if ((empty($uri)) || ($uri{0} != '/')) {</p><p> $uri = '/' . $uri;</p><p> }</p><p> if (($parameters != false) && (! empty($parameters))) {</p><p> $paramstring = '?' . $parameters;</p><p> } else {</p><p> $paramstring = '';</p><p> }</p><p> if (($cookies != false) && (! empty($cookies))) {</p><p> $cookiestring = 'Cookie: ' . $cookies . "\r\n";</p><p> } else {</p><p> $cookiestring = '';</p><p> }</p><p> if (! empty($authuser)) {</p><p> $authstring = 'Authorization: Basic ' . base64_encode($authuser . ':' . $authpassword) . "\r\n";</p><p> } else {</p><p> $authstring = '';</p><p> }</p><p> $host = $this->host;</p><p> if ($this->port != 80) {</p><p> $host .= ':' . $this->port;</p><p> }</p><p> fwrite($connection, 'GET ' . $uri . $paramstring . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n\r\n");</p><p> $reply = '';</p><p> while (! feof($connection)) {</p><p> $reply .= @fread($connection, 128);</p><p> }</p><p> fclose($connection);</p><p> $data = $this->decodereply($reply);</p><p> return $data;</p><p> }</p><p> public function post ($uri = '/', $parameters = false, $cookies = false, $fileparameters = false, $mimetypes = false, $authuser = '', $authpassword = '')</p><p> {</p><p> if ($this->ssl == true) {</p><p> $connection = @fsockopen('ssl://' . $this->host, $this->port);</p><p> } else {</p><p> $connection = @fsockopen($this->host, $this->port);</p><p> }</p><p> if ($connection == false) {</p><p> return false;</p><p> }</p><p> if ((empty($uri)) || ($uri{0} != '/')) {</p><p> $uri = '/' . $uri;</p><p> }</p><p> if (($cookies != false) && (! empty($cookies))) {</p><p> $cookiestring = 'Cookie: ' . $cookies . "\r\n";</p><p> } else {</p><p> $cookiestring = '';</p><p> }</p><p> if (! empty($authuser)) {</p><p> $authstring = 'Authorization: Basic ' . base64_encode($authuser . ':' . $authpassword) . "\r\n";</p><p> } else {</p><p> $authstring = '';</p><p> }</p><p> $host = $this->host;</p><p> if ($this->port != 80) {</p><p> $host .= ':' . $this->port;</p><p> }</p><p> if (($fileparameters == false) || (empty($fileparameters))) {</p><p> if (($parameters != false) && (! empty($parameters))) {</p><p> $contentlength = strlen($parameters);</p><p> fwrite($connection, 'POST ' . $uri . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n");</p><p> fwrite($connection, "Content-Type: application/x-www-form-urlencoded\r\nContent-Length: " . $contentlength . "\r\n\r\n" . $parameters);</p><p> } else {</p><p> fwrite($connection, 'POST ' . $uri . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n\r\n");</p><p> }</p><p> } else {</p><p> $params = explode('&', $parameters);</p><p> for ($x = 0; $x < count($params); $x ++) {</p><p> $params[$x] = explode('=', $params[$x]);</p><p> }</p><p> $fileparams = explode('&', $fileparameters);</p><p> for ($x = 0; $x < count($fileparams); $x ++) {</p><p> $fileparams[$x] = explode('=', $fileparams[$x]);</p><p> }</p><p> if (($mimetypes != false) && (! empty($mimetypes))) {</p><p> $mimetypeparams = explode(',', $mimetypes);</p><p> }</p><p> if (! isset($mimetypeparams)) {</p><p> $mimetypeparams = array();</p><p> }</p><p> while (count($mimetypeparams) < count($fileparams)) {</p><p> $mimetypeparams[] = 'application/octet-stream';</p><p> }</p><p> $boundary = '-------------------------' . substr(md5(uniqid()), 0, 15);</p><p> $content = '';</p><p> for ($x = 0; $x < count($fileparams); $x ++) {</p><p> $postfile = fopen($fileparams[$x][1], 'r');</p><p> $filecontent = fread($postfile, filesize($fileparams[$x][1]));</p><p> fclose($postfile);</p><p> $content .= '--' . $boundary . "\r\n";</p><p> $content .= 'Content-Disposition: form-data; name="' . $fileparams[$x][0] . '"; filename="' . $fileparams[$x][1] . '"' . "\r\n";</p><p> $content .= 'Content-Type: ' . $mimetypeparams[$x] . "\r\n\r\n";</p><p> $content .= $filecontent . "\r\n";</p><p> }</p><p> for ($x = 0; $x < count($params); $x ++) {</p><p> $content .= '--' . $boundary . "\r\n";</p><p> $content .= 'Content-Disposition: form-data; name="' . $params[$x][0] . '"' . "\r\n\r\n";</p><p> if (! empty($params[$x][1])) {</p><p> $content .= $params[$x][1] . "\r\n";</p><p> }</p><p> }</p><p> $content .= '--' . $boundary . "--\r\n";</p><p> $contentlength = strlen($content);</p><p> fwrite($connection, 'POST ' . $uri . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n");</p><p> fwrite($connection, 'Content-Type: multipart/form-data; boundary=' . $boundary . "\r\nContent-Length: " . $contentlength . "\r\n\r\n");</p><p> fwrite($connection, $content, $contentlength);</p><p> }</p><p> $reply = '';</p><p> while (! feof($connection)) {</p><p> $reply .= @fread($connection, 128);</p><p> }</p><p> fclose($connection);</p><p> $data = $this->decodereply($reply);</p><p> return $data;</p><p> }</p><p>}</p><p></p><p></p><p>/**</p><p> * is.gd API</p><p> * </p><p> * @version $Id: ISGD.php 217 2010-01-21 17:05:24Z Christian $</p><p> * @package Link</p><p> * @requires httpconnection</p><p> */</p><p>define('PARSE_HTML_TIDY_DOM', 1);</p><p>define('PARSE_HTML_RAW', 2);</p><p>class Link_ISGD extends httpconnection</p><p>{</p><p> /**</p><p> * @var string API host</p><p> */</p><p> private static $apiHost = 'is.gd';</p><p> /**</p><p> * @var string API URL</p><p> */</p><p> private static $apiPath = '/api.php?longurl=';</p><p> /**</p><p> * @var string encoding method</p><p> */</p><p> private static $encMethod = 'urlencode';</p><p> /**</p><p> * @var string table for localcache</p><p> */</p><p> public static $localCacheTable = 'isgd_links';</p><p> /**</p><p> * @var object Link_ISGD</p><p> */</p><p> public static $instance;</p><p> /**</p><p> * @var object sql2</p><p> */</p><p> private static $db;</p><p> /**</p><p> * @var boolean use local cache</p><p> */</p><p> public static $localCache = false;</p><p> /**</p><p> * @var string to encode</p><p> */</p><p> public $toEncode;</p><p> /**</p><p> * @var string result</p><p> */</p><p> public $result;</p><p> /**</p><p> * @var int errorlevel</p><p> */</p><p> public static $errorLevel = E_USER_WARNING;</p><p> /**</p><p> * constructor</p><p> */</p><p> public function __construct ()</p><p> {</p><p> parent::__construct(self::$apiHost);</p><p> }</p><p> /**</p><p> * return instance</p><p> * @return object Link_ISGD</p><p> */</p><p> public static function getInstance ()</p><p> {</p><p> if (! self::$instance) {</p><p> self::$instance = new self();</p><p> }</p><p> return self::$instance;</p><p> }</p><p> /**</p><p> * shorten a signle link</p><p> * @return result link</p><p> */</p><p> public function shortenLink ($strLink)</p><p> {</p><p> $this->setToEncode($strLink);</p><p> $this->setResult($this->fetch());</p><p> return $this->getResult();</p><p> }</p><p> /**</p><p> * scan $strHTML for href-links and shorten them</p><p> * @return string html</p><p> */</p><p> public function shortenHTML ($strHTML, $method = PARSE_HTML_RAW)</p><p> {</p><p> switch ($method) {</p><p> case PARSE_HTML_RAW:</p><p> default:</p><p> return preg_replace_callback("/href=[\"|']([^\"]*)[\"|']/i", array($this , 'xparse'), $strHTML);</p><p> break;</p><p> case PARSE_HTML_TIDY_DOM:</p><p> //tidy up html</p><p> $tidy = tidy_parse_string(stripslashes($strHTML));</p><p> $tidy->cleanRepair();</p><p> //load as domdocument</p><p> $dom = new DOMDocument();</p><p> $dom->loadHTML($tidy);</p><p> $l = $dom->getElementsByTagName('a');</p><p> for ($i = 0; $i < $l->length; $i ++) {</p><p> foreach ($l->item($i)->attributes as $attr) {</p><p> if($attr->name=='href')</p><p> {</p><p> $l->item($i)->setAttribute('href',$this->shortenLink(urlencode($attr->value)));</p><p> }</p><p> }</p><p> }</p><p> return $dom->saveHTML();</p><p> break;</p><p> }</p><p> }</p><p> /**</p><p> * for internal purpose only</p><p> * callback function for shortenHTML's preg_replace</p><p> * @return string</p><p> */</p><p> public static function xparse ($hits)</p><p> {</p><p> if (isset($hits[1])) {</p><p> if (strtolower(substr($hits[1], 0, 4)) == 'http') {</p><p> $short = self::getInstance()->shortenLink($hits[1]);</p><p> return str_replace($hits[1], $short, $hits[0]);</p><p> }</p><p> }</p><p> return $hits[0];</p><p> }</p><p> /**</p><p> * fire request</p><p> * </p><p> * @return string response body</p><p> * @see httpconnection::get()</p><p> * @link http://is.gd/api_info.php</p><p> */</p><p> private function fetch ()</p><p> {</p><p> $s = $this->getToEncode();</p><p> $url = self::$apiPath . $s;</p><p> $result = parent::get($url);</p><p> if ($result['head']['code'] == "200") {</p><p> return $result['body'];</p><p> } else {</p><p> trigger_error('Fehler beim Linkkuerzen! ' . strip_tags($result['body']), self::getErrorLevel());</p><p> /**</p><p> * since at this point $s is already</p><p> * URLENCODED, we reverse this step to</p><p> * have no unforeseen results</p><p> */</p><p> return urldecode($s);</p><p> }</p><p> }</p><p> /**</p><p> * set error level to be triggered once an error appears </p><p> * default: E_USER_WARNING</p><p> */</p><p> public static function setErrorLevel ($level = E_USER_WARNING)</p><p> {</p><p> self::$errorLevel = $level;</p><p> }</p><p> /**</p><p> * @return int errorlevel</p><p> */</p><p> public static function getErrorLevel ()</p><p> {</p><p> return self::$errorLevel;</p><p> }</p><p> /**</p><p> * @return string</p><p> */</p><p> public function getResult ()</p><p> {</p><p> return $this->result;</p><p> }</p><p> /**</p><p> * @return string</p><p> */</p><p> public function getToEncode ()</p><p> {</p><p> return $this->toEncode;</p><p> }</p><p> /**</p><p> * @param string $result</p><p> */</p><p> public function setResult ($result)</p><p> {</p><p> $this->result = $result;</p><p> }</p><p> /**</p><p> * @param string $toEncode</p><p> */</p><p> public function setToEncode ($toEncode)</p><p> {</p><p> $this->toEncode = $toEncode;</p><p> }</p><p> /**</p><p> * @return boolean</p><p> */</p><p> public function getLocalCache ()</p><p> {</p><p> return self::$localCache;</p><p> }</p><p> /**</p><p> * @param boolean $localCache</p><p> */</p><p> public function setLocalCache ($localCache)</p><p> {</p><p> self::$localCache = $localCache;</p><p> }</p><p> /**</p><p> * @return object</p><p> */</p><p> public function getDb ()</p><p> {</p><p> return self::$db;</p><p> }</p><p> /**</p><p> * @param object $db</p><p> */</p><p> public function setDb ($db)</p><p> {</p><p> self::$db = $db;</p><p> }</p><p>}</p><p></p><p></p><p>//Beispiel:</p><p>$isgd = new Link_ISGD();</p><p></p><p>//Einfachen Link kuerzen:</p><p>$shortURL = $isgd->shortenLink('http://google.de');</p><p></p><p>//Komplettes HTML kuerzen:</p><p>$shortenedHTML = $isgd->shortenHTML('....',PARSE_HTML_RAW); //Oder: PARSE_HTML_TIDY_DOM benötigt Tidy und DOMDocument</p><p>?>[/php]</p><p></p><p>Benutzt allerdings die is.gd API</p></blockquote><p></p>
[QUOTE="Christian, post: 1493836, member: 3735"] [b]AW: Links automatisch mittel tinyurl.com generieren[/b] Hatte da mal was geschrieben: [php]<?php /** * @version $Id: class.httpconnection.php 200 2009-11-06 08:54:05Z Christian $ */ /* httpconnection.class.php Version 1.1 Part of the PHP class collection http://www.sourceforge.net/projects/php-classes/ Written by: Dennis Wronka License: LGPL */ class httpconnection { private $host; private $port; private $ssl; private $useragent; public function __construct ($host, $port = 80, $ssl = false, $useragent = 'Mozilla/5.0 (Windows; U; Windows NT 5.0; de; rv:1.9.0.4) Gecko/2008102920 Firefox/3.0.4') { $this->host = $host; $this->port = $port; $this->ssl = $ssl; $this->useragent = $useragent; } private function decodereply ($reply) { $headend = strpos($reply, "\r\n\r\n") + 2; $head = substr($reply, 0, $headend); $httpversion = substr($head, 5, 3); $contentlength = ''; $contentlengthstart = strpos($head, 'Content-Length:'); if ($contentlengthstart != false) { $contentlengthstart += 16; $contentlengthend = strpos($head, "\r\n", $contentlengthstart); $contentlength = substr($head, $contentlengthstart, $contentlengthend - $contentlengthstart); } if ($httpversion == '1.0') { $datastart = $headend + 2; $body = substr($reply, $datastart, strlen($reply) - $datastart); } elseif ($httpversion == '1.1') { $encoding = ''; $encodingstart = strpos($head, 'Transfer-Encoding:'); if ($encodingstart != false) { $encodingstart += 19; $encodingend = strpos($head, "\r\n", $encodingstart); $encoding = substr($head, $encodingstart, $encodingend - $encodingstart); } if ($encoding == 'chunked') { $datasizestart = $headend + 2; $datasizeend = strpos($reply, "\r\n", $datasizestart); $datasize = hexdec(trim(substr($reply, $datasizestart, $datasizeend - $datasizestart))); $body = ''; while ($datasize > 0) { $chunkstart = $datasizeend + 2; $body .= substr($reply, $chunkstart, $datasize); $datasizestart = $chunkstart + $datasize + 2; $datasizeend = strpos($reply, "\r\n", $datasizestart); $datasize = hexdec(trim(substr($reply, $datasizestart, $datasizeend - $datasizestart))); } } else { $datastart = $headend + 2; $datasize = $contentlength; $body = substr($reply, $datastart, $datasize); } } $code = substr($head, 9, 3); $serverstart = strpos($head, 'Server:') + 8; $serverend = strpos($head, "\r\n", $serverstart); $server = substr($head, $serverstart, $serverend - $serverstart); $contenttype = ''; $contenttypestart = strpos($head, 'Content-Type:'); if ($contenttypestart != false) { $contenttypestart += 14; $contenttypeend = strpos($head, "\r\n", $contenttypestart); $contenttype = substr($head, $contenttypestart, $contenttypeend - $contenttypestart); } $location = ''; $locationstart = strpos($head, 'Location:'); if ($locationstart != false) { $locationstart += 10; $locationend = strpos($head, "\r\n", $locationstart); $location = substr($head, $locationstart, $locationend - $locationstart); $location_array = explode('?', $location); $parameters = ''; if (isset($location_array[1])) { $parameters = $location_array[1]; } $location = array('uri' => $location_array[0] , 'parameters' => $parameters); if (empty($parameters)) { unset($location['parameters']); } } $cookies = array(); $cookiestart = stripos($head, 'Set-Cookie:'); while ($cookiestart != false) { $cookiestart += 12; $cookieend = strpos($head, "\r\n", $cookiestart); $cookie = substr($head, $cookiestart, $cookieend - $cookiestart); $cookie_array = explode(';', $cookie); $expirydate = ''; $path = ''; for ($x = 0; $x < count($cookie_array); $x ++) { $cookie_array[$x] = explode("=", $cookie_array[$x]); if ($x == 0) { $name = $cookie_array[$x][0]; $value = $cookie_array[$x][1]; } else { if (trim($cookie_array[$x][0]) == 'expires') { $expirydate = array('string' => $cookie_array[$x][1] , 'timestamp' => strtotime($cookie_array[$x][1])); } elseif (trim($cookie_array[$x][0]) == 'path') { $path = $cookie_array[$x][1]; } } } $cookie = array('name' => $name , 'value' => $value , 'path' => $path , 'expirydate' => $expirydate); if (empty($path)) { unset($cookie['path']); } if (empty($expirydate)) { unset($cookie['expirydate']); } $cookies[] = $cookie; $cookiestart = stripos($head, 'Set-Cookie:', $cookieend); } $headdata = array('raw' => $head , 'httpversion' => $httpversion , 'code' => $code , 'server' => $server , 'contentlength' => $contentlength , 'contenttype' => $contenttype , 'location' => $location , 'cookies' => $cookies); if ((empty($contentlength)) && ($contentlength != 0)) { unset($headdata['contentlength']); } if (empty($contenttype)) { unset($headdata['contenttype']); } if (empty($location)) { unset($headdata['location']); } if (empty($cookies)) { unset($headdata['cookies']); } $data = array('head' => $headdata , 'body' => $body); return $data; } public function head ($uri = '/', $parameters = false, $cookies = false, $authuser = '', $authpassword = '') { if ($this->ssl == true) { $connection = @fsockopen('ssl://' . $this->host, $this->port); } else { $connection = @fsockopen($this->host, $this->port); } if ($connection == false) { return false; } if ((empty($uri)) || ($uri{0} != '/')) { $uri = '/' . $uri; } if (($parameters != false) && (! empty($parameters))) { $paramstring = '?' . $parameters; } else { $paramstring = ''; } if (($cookies != false) && (! empty($cookies))) { $cookiestring = 'Cookie: ' . $cookies . "\r\n"; } else { $cookiestring = ''; } if (! empty($authuser)) { $authstring = 'Authorization: Basic ' . base64_encode($authuser . ':' . $authpassword) . "\r\n"; } else { $authstring = ''; } $host = $this->host; if ($this->port != 80) { $host .= ':' . $this->port; } fwrite($connection, 'HEAD ' . $uri . $paramstring . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n\r\n"); $reply = ''; while (! feof($connection)) { $reply .= @fread($connection, 128); } fclose($connection); $data = $this->decodereply($reply); return $data; } public function get ($uri = '/', $parameters = false, $cookies = false, $authuser = '', $authpassword = '') { if ($this->ssl == true) { $connection = @fsockopen('ssl://' . $this->host, $this->port); } else { $connection = @fsockopen($this->host, $this->port); } if ($connection == false) { return false; } if ((empty($uri)) || ($uri{0} != '/')) { $uri = '/' . $uri; } if (($parameters != false) && (! empty($parameters))) { $paramstring = '?' . $parameters; } else { $paramstring = ''; } if (($cookies != false) && (! empty($cookies))) { $cookiestring = 'Cookie: ' . $cookies . "\r\n"; } else { $cookiestring = ''; } if (! empty($authuser)) { $authstring = 'Authorization: Basic ' . base64_encode($authuser . ':' . $authpassword) . "\r\n"; } else { $authstring = ''; } $host = $this->host; if ($this->port != 80) { $host .= ':' . $this->port; } fwrite($connection, 'GET ' . $uri . $paramstring . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n\r\n"); $reply = ''; while (! feof($connection)) { $reply .= @fread($connection, 128); } fclose($connection); $data = $this->decodereply($reply); return $data; } public function post ($uri = '/', $parameters = false, $cookies = false, $fileparameters = false, $mimetypes = false, $authuser = '', $authpassword = '') { if ($this->ssl == true) { $connection = @fsockopen('ssl://' . $this->host, $this->port); } else { $connection = @fsockopen($this->host, $this->port); } if ($connection == false) { return false; } if ((empty($uri)) || ($uri{0} != '/')) { $uri = '/' . $uri; } if (($cookies != false) && (! empty($cookies))) { $cookiestring = 'Cookie: ' . $cookies . "\r\n"; } else { $cookiestring = ''; } if (! empty($authuser)) { $authstring = 'Authorization: Basic ' . base64_encode($authuser . ':' . $authpassword) . "\r\n"; } else { $authstring = ''; } $host = $this->host; if ($this->port != 80) { $host .= ':' . $this->port; } if (($fileparameters == false) || (empty($fileparameters))) { if (($parameters != false) && (! empty($parameters))) { $contentlength = strlen($parameters); fwrite($connection, 'POST ' . $uri . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n"); fwrite($connection, "Content-Type: application/x-www-form-urlencoded\r\nContent-Length: " . $contentlength . "\r\n\r\n" . $parameters); } else { fwrite($connection, 'POST ' . $uri . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n\r\n"); } } else { $params = explode('&', $parameters); for ($x = 0; $x < count($params); $x ++) { $params[$x] = explode('=', $params[$x]); } $fileparams = explode('&', $fileparameters); for ($x = 0; $x < count($fileparams); $x ++) { $fileparams[$x] = explode('=', $fileparams[$x]); } if (($mimetypes != false) && (! empty($mimetypes))) { $mimetypeparams = explode(',', $mimetypes); } if (! isset($mimetypeparams)) { $mimetypeparams = array(); } while (count($mimetypeparams) < count($fileparams)) { $mimetypeparams[] = 'application/octet-stream'; } $boundary = '-------------------------' . substr(md5(uniqid()), 0, 15); $content = ''; for ($x = 0; $x < count($fileparams); $x ++) { $postfile = fopen($fileparams[$x][1], 'r'); $filecontent = fread($postfile, filesize($fileparams[$x][1])); fclose($postfile); $content .= '--' . $boundary . "\r\n"; $content .= 'Content-Disposition: form-data; name="' . $fileparams[$x][0] . '"; filename="' . $fileparams[$x][1] . '"' . "\r\n"; $content .= 'Content-Type: ' . $mimetypeparams[$x] . "\r\n\r\n"; $content .= $filecontent . "\r\n"; } for ($x = 0; $x < count($params); $x ++) { $content .= '--' . $boundary . "\r\n"; $content .= 'Content-Disposition: form-data; name="' . $params[$x][0] . '"' . "\r\n\r\n"; if (! empty($params[$x][1])) { $content .= $params[$x][1] . "\r\n"; } } $content .= '--' . $boundary . "--\r\n"; $contentlength = strlen($content); fwrite($connection, 'POST ' . $uri . " HTTP/1.1\r\nHost: " . $host . "\r\nUser-Agent: " . $this->useragent . "\r\n" . $cookiestring . $authstring . "Connection: close\r\n"); fwrite($connection, 'Content-Type: multipart/form-data; boundary=' . $boundary . "\r\nContent-Length: " . $contentlength . "\r\n\r\n"); fwrite($connection, $content, $contentlength); } $reply = ''; while (! feof($connection)) { $reply .= @fread($connection, 128); } fclose($connection); $data = $this->decodereply($reply); return $data; } } /** * is.gd API * * @version $Id: ISGD.php 217 2010-01-21 17:05:24Z Christian $ * @package Link * @requires httpconnection */ define('PARSE_HTML_TIDY_DOM', 1); define('PARSE_HTML_RAW', 2); class Link_ISGD extends httpconnection { /** * @var string API host */ private static $apiHost = 'is.gd'; /** * @var string API URL */ private static $apiPath = '/api.php?longurl='; /** * @var string encoding method */ private static $encMethod = 'urlencode'; /** * @var string table for localcache */ public static $localCacheTable = 'isgd_links'; /** * @var object Link_ISGD */ public static $instance; /** * @var object sql2 */ private static $db; /** * @var boolean use local cache */ public static $localCache = false; /** * @var string to encode */ public $toEncode; /** * @var string result */ public $result; /** * @var int errorlevel */ public static $errorLevel = E_USER_WARNING; /** * constructor */ public function __construct () { parent::__construct(self::$apiHost); } /** * return instance * @return object Link_ISGD */ public static function getInstance () { if (! self::$instance) { self::$instance = new self(); } return self::$instance; } /** * shorten a signle link * @return result link */ public function shortenLink ($strLink) { $this->setToEncode($strLink); $this->setResult($this->fetch()); return $this->getResult(); } /** * scan $strHTML for href-links and shorten them * @return string html */ public function shortenHTML ($strHTML, $method = PARSE_HTML_RAW) { switch ($method) { case PARSE_HTML_RAW: default: return preg_replace_callback("/href=[\"|']([^\"]*)[\"|']/i", array($this , 'xparse'), $strHTML); break; case PARSE_HTML_TIDY_DOM: //tidy up html $tidy = tidy_parse_string(stripslashes($strHTML)); $tidy->cleanRepair(); //load as domdocument $dom = new DOMDocument(); $dom->loadHTML($tidy); $l = $dom->getElementsByTagName('a'); for ($i = 0; $i < $l->length; $i ++) { foreach ($l->item($i)->attributes as $attr) { if($attr->name=='href') { $l->item($i)->setAttribute('href',$this->shortenLink(urlencode($attr->value))); } } } return $dom->saveHTML(); break; } } /** * for internal purpose only * callback function for shortenHTML's preg_replace * @return string */ public static function xparse ($hits) { if (isset($hits[1])) { if (strtolower(substr($hits[1], 0, 4)) == 'http') { $short = self::getInstance()->shortenLink($hits[1]); return str_replace($hits[1], $short, $hits[0]); } } return $hits[0]; } /** * fire request * * @return string response body * @see httpconnection::get() * @link http://is.gd/api_info.php */ private function fetch () { $s = $this->getToEncode(); $url = self::$apiPath . $s; $result = parent::get($url); if ($result['head']['code'] == "200") { return $result['body']; } else { trigger_error('Fehler beim Linkkuerzen! ' . strip_tags($result['body']), self::getErrorLevel()); /** * since at this point $s is already * URLENCODED, we reverse this step to * have no unforeseen results */ return urldecode($s); } } /** * set error level to be triggered once an error appears * default: E_USER_WARNING */ public static function setErrorLevel ($level = E_USER_WARNING) { self::$errorLevel = $level; } /** * @return int errorlevel */ public static function getErrorLevel () { return self::$errorLevel; } /** * @return string */ public function getResult () { return $this->result; } /** * @return string */ public function getToEncode () { return $this->toEncode; } /** * @param string $result */ public function setResult ($result) { $this->result = $result; } /** * @param string $toEncode */ public function setToEncode ($toEncode) { $this->toEncode = $toEncode; } /** * @return boolean */ public function getLocalCache () { return self::$localCache; } /** * @param boolean $localCache */ public function setLocalCache ($localCache) { self::$localCache = $localCache; } /** * @return object */ public function getDb () { return self::$db; } /** * @param object $db */ public function setDb ($db) { self::$db = $db; } } //Beispiel: $isgd = new Link_ISGD(); //Einfachen Link kuerzen: $shortURL = $isgd->shortenLink('http://google.de'); //Komplettes HTML kuerzen: $shortenedHTML = $isgd->shortenHTML('....',PARSE_HTML_RAW); //Oder: PARSE_HTML_TIDY_DOM benötigt Tidy und DOMDocument ?>[/php] Benutzt allerdings die is.gd API [/QUOTE]
Bilder bitte
hier hochladen
und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Zitate einfügen…
Authentifizierung
Wenn ▲ = 5, ▼ = 2 und ■ = 7, was ist ▲ × ▼ + ■?
Antworten
Start
Forum
Sonstiges
Webdesign, Webentwicklung & Programmierung
PHP, Javascript, jQuery, Ajax, nodeJS, MySQL...
Links automatisch mittel tinyurl.com generieren
Oben