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

Mit PHP eine (https) dropbox-Freigabe auslesen

Frage Entwicklung PHP

Mitglied: peterha

peterha (Level 1) - Jetzt verbinden

03.07.2013, aktualisiert 20:58 Uhr, 3133 Aufrufe, 9 Kommentare

Hallo liebe Gemeinde,
hallo Timo Beil,

ich habe eine Frage die wohl einfach zu beantworten ist.

Ich habe ein PHP-script am Laufen, das Bilder aus einem Verzeichnis (www.d@u.de/verzeichnis) darstellt. Funktioniert alles ok.

Jetzt woran ich gescheitert bin:

Ich möchte das Verzeichnis aus dem die Bilder ausgelesen werden umstellen auf eine Dropbox-Freigabe (https://www.dropbox.com/sh/fsdlifu484ls3jf8slf/skdjfllsdksdfsdfsdfsdf - ja der Link ist hier in diesem Beispiel ungültig)


Hier der akuelle - nicht - funktionierende Code, bei dem ich (in meiner Blauäugigkeit) einfach den Originaleintrag "images" (der ein Ordner also www.d@u.de/images ist) abgeändert in den Dropboxlink.

01.
<div id="galerie"> 
02.
	<?php 
03.
    $ordner = "https://www.dropbox.com/sh/fsdlifu484ls3jf8slf/skdjfllsdksdfsdfsdfsdf"; 
04.
    $allebilder = scandir($ordner);
Meine Frage ist nun wie ich den Code anpassen muss, dass er die Bilder die in der Dropboxgalerie sind anzeigt also drauf zugreifen kann.

Vielen Dank für Ideen und Tipps.

Peter
Mitglied: Herbrich19
04.07.2013 um 01:35 Uhr
Hallo,

Ich kann dir zwar die Frage leider nicht beandworten, aber ich habe einen kleinen denkansatz. Screencrapping z.B., oder aber die Dropbox als XML zu laden und dann auszulesen. Mann kann aber auch einfach (Stichwort Screencrapping) mit Regex die Elemente mit den Bildern Raussuchen lassen und so einfach dass abfragen was man braucht. Die Billder kommen dann in eine Liste und daraus machst du dann die Gallerie. Sry aber ich habe es nicht so mit PHP, ich komme ehr aus der ASP.NET ecke.

LG, Herbrich
Bitte warten ..
Mitglied: Arano
04.07.2013 um 04:24 Uhr
Moin,

also so einfach wie mit einem echtem Verzeichnis geht das nicht !
Immerhin muss man sich ja auch irgendwie authentifizieren, sonst hätte ja jeder Zugriff Oo

https://www.dropbox.com/developers/core/start/php


~Arano
(Ich besitze keine DropBox oder ähnliches)
Bitte warten ..
Mitglied: peterha
04.07.2013 um 08:24 Uhr
Hi danke für die Meldungen. @Arano doch der link reicht. Es ist ein Freigabe bei der im link die authentication bei ist. Das ist ja eine praktische Sache der dropbox. (Bei g drive bräuchte der zugreifende einen g Account) bei dropbox reicht es diesen link zu haben und man kann drauf zugreifen.
Bitte warten ..
Mitglied: nxclass
04.07.2013 um 11:09 Uhr
...mit scandir() wirst du nicht weit kommen - schau mal: http://php.net/manual/en/function.file-get-contents.php oder http://php.net/manual/en/book.curl.php
Bitte warten ..
Mitglied: colinardo
04.07.2013, aktualisiert um 11:33 Uhr
Hallo Peter,
hab mir so eine Dropbox-Seite mal näher angeschaut und dir folgendes gebaut:
(den Link zu deiner Dropbox-Seite gibst du in der Variablen $urlDropBox an.)
01.
function fread_url($url,$ref=""
02.
03.
	if(function_exists("curl_init")){ 
04.
		$ch = curl_init($url); 
05.
		$user_agent = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)"
06.
		curl_setopt($ch, CURLOPT_USERAGENT, $user_agent); 
07.
		curl_setopt( $ch, CURLOPT_HTTPGET, 1 ); 
08.
		curl_setopt( $ch, CURLOPT_RETURNTRANSFER, 1 ); 
09.
		curl_setopt( $ch, CURLOPT_FOLLOWLOCATION , 1 ); 
10.
		curl_setopt( $ch, CURLOPT_REFERER, $ref ); 
11.
		$html = curl_exec($ch); 
12.
		curl_close($ch); 
13.
14.
	else
15.
		$hfile = fopen($url,"r"); 
16.
		if($hfile){ 
17.
			while(!feof($hfile)){ 
18.
				$html.=fgets($hfile,1024); 
19.
20.
21.
22.
	return $html
23.
24.
   
25.
  $urlDropBox = "https://www.dropbox.com/sh/xxxxxxxxxxxxxxxxxxxxx"
26.
  $sHTML = fread_url($urlDropBox); 
27.
  preg_match_all('/<a href=\"([^"]*)\"[^>]*><img data-src=\"([^"]*)\" data-fail-src=\"[^"]*\"/',$sHTML,$matches); 
28.
  for ($i=0;$i<count($matches[1]); $i++){ 
29.
	echo '<p><a href="'.$matches[1][$i].'"><img src="'.$matches[2][$i].'" ></a></p>>'
30.
  }
Die erste Function ist nur dazu da sich den kompletten HTML-Content der Seite zu holen. Ich weiß es gibt dafür in PHP extra Funktionen aber diese sind bei vielen Hostern aus Sicherheitsgründen nicht verwendbar; deshalb die Function mit CURL die bei den meisten Hosting-Paketen funktioniert.
Das Script extrahiert die URLs der Vorschaubilder(via RegEx) von der Seite und verlinkt dann die Bilder mit der Dropbox-Seite auf dem man das Original-Bild ansehen kann.
Um aus der ersten Seite das Original-Bild in voller Größe zu erhalten müsste man dazu dem Link zu jedem Bild folgen da man das Original-Bild erst dort extrahieren kann.

Denke das sollte dich deinem Vorhaben einen Schritt weiter bringen...

Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
Bitte warten ..
Mitglied: Herbrich19
04.07.2013 um 18:32 Uhr
Hallo, giebt es da zufällig auch ne ASP.NET Lösung für Dropbox??

LG, Herbrich
Bitte warten ..
Mitglied: colinardo
05.07.2013, aktualisiert um 10:05 Uhr
Zitat von Herbrich19:
Hallo, giebt es da zufällig auch ne ASP.NET Lösung für Dropbox??

Beispiel mit ASP.NET
(Zeile3 noch die URL zur Dropbox-Seite mit den Bildern eintragen)
01.
   Public allImages As String 
02.
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
03.
        Dim urls As Collection = getDropBoxImages("[URL ZUR DROPBOXSEITE MIT DEN BILDERN]") 
04.
        For Each url In urls 
05.
            allImages &= "<div style=""float:left; margin:5px""><a href=""" & url(1) & """><img src=""" & url(0) & """></a></div>" 
06.
        Next 
07.
 
08.
    End Sub 
09.
 
10.
    'Returns Urls of DropBox-Images as a Collection 
11.
    Public Function getDropBoxImages(ByVal strURL As String) As Collection 
12.
        Dim shtml As String = New System.Net.WebClient().DownloadString(strURL) 
13.
        Dim matches As RegularExpressions.MatchCollection = New RegularExpressions.Regex("<a href=\""([^""]*)\""[^>]*><img data-src=\""([^""]*)\"" data-fail-src=\""[^""]*\""").Matches(shtml) 
14.
        If matches.Count > 0 Then 
15.
            Dim urls As New Collection 
16.
            Dim counter As Int32 = 0 
17.
            For Each m As RegularExpressions.Match In matches 
18.
                counter += 1 
19.
                urls.Add({m.Groups(2).Value, m.Groups(1).Value}, counter) 
20.
            Next 
21.
            Return urls 
22.
        else 
23.
            Return Nothing 
24.
        End If 
25.
         
26.
    End Function
in eine Seite baust du dann folgenden String ein:
<%= allImages%>
Grüße Uwe
gelöste Beitrage bitte auch als solche markieren.Danke
Bitte warten ..
Mitglied: Herbrich19
05.07.2013 um 09:59 Uhr
Hallo,

Hey echt vielen Dank. Hat der Script ein © oder darf man ihn umbauen?? Den ich würde dann die URL nicht eintragen sondern eine Altanative Methode Nutzen, also eine Zweite Funktion machen die dann endweder auf eine DB zugreift, ein Postback, ein Get Parameter nutzt oder ein Steuerelement (wie TextBox o.ä,) Abfragt.

Aber echt vielen Dank für den Script.

LG, Herbrich
Bitte warten ..
Mitglied: colinardo
05.07.2013 um 10:01 Uhr
Zitat von Herbrich19:
Hallo,

Hey echt vielen Dank. Hat der Script ein © oder darf man ihn umbauen??
kannst du verwenden wie du willst, ist von mir ...Viel Spaß
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
JavaScript
gelöst Dropdownfeld auslesen und mit AJAX und JS an PHP senden (7)

Frage von ITFlori zum Thema JavaScript ...

PHP
gelöst HTML Dropdownmenü auslesen und in PHP als Variable übergeben (35)

Frage von ITFlori zum Thema PHP ...

PHP
gelöst Externe XML-Datei in PHP auslesen (18)

Frage von Akrosh zum Thema PHP ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...