Top-Themen

Aktuelle Themen (A bis Z)

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, 3418 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 ..
Ähnliche Inhalte
PHP
Wie in PHP ein array auslesen?
gelöst Frage von JochemPHP5 Kommentare

Moin zusammen, ich versuche, Daten aus einer Datenbank in mehrere arrays (pro DB-Feld ein array) zu schreiben und die ...

Netzwerkmanagement
FTP Wie Dropbox
gelöst Frage von chrisschmitt93Netzwerkmanagement5 Kommentare

Hallo zusammen, folgendes Problem, wir haben 3 Niederlassungen, 2x in Deutschland, 1x in China. Wir benutzen momentan Dropbox um ...

PHP
PHP Script zum Daten auslesen gesucht
Frage von majas3PHP2 Kommentare

Hallo, ich habe viele taußend HTML Seiten in verschiedenen Verzeichnissen und bin auf der Suche nach einem PHP Script ...

PHP
PHP und Samba AD - auslesen Möglich?
Frage von thepandapiPHP3 Kommentare

Guten Tag Zusammen! ich schreibe zur zeit ein Server Dashboard, wo unserem Unternehmen Statistiken und Infos über den lokalen ...

Neue Wissensbeiträge
Microsoft

Update KB4073578 für AMD CPU (Spectre und Meltdown Lücke)

Information von sabines vor 1 StundeMicrosoft

Wegen Problemen (BOSD, nicht startende PCs) wurde das Update KB4056897 und KB4056894 für AMD CPUs zurückgezogen. Dieses Update KB4073578 ...

Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 14 StundenMac OS X1 Kommentar

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser erreichbar sind. Leider fehlt ...

Datenschutz

Weitere Informationen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 21 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 22 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1018 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...