Anzeige der IP in Bilderupload und ggf. Sortierung

  • Hallöchen.

    Ich benötige mal wieder eure Hilfe, da ich nicht weiterkomme...

    Ich habe bei php-space einen Bilder Upload-Script runtergeladen und ihn auch erfolgreich auf meine Seite implementiert.
    Habe im Script bereits einige Änderungen vorgenommen, damit es meinem Wunsch entspricht.

    Nun möchte ich, dass in der Tabelle, wo die Bilder für die Administratoren sichtbar sind, die IP Adressen der "Hochlader" anzeigen lassen.
    Das wäre für den Ablauf sehr sehr wichtig und von Vorteil, da wir nur anhand diesem Parameter das Bild zum User zuordnen.


    Die Tabelle sieht wie folgt aus:

    [Blockierte Grafik: http://testumgebung.ichchatte.de/img/tabelle.png]


    In der $lang habe ich bereits den Namen "Nutzer IP" hinterlegt und eine neue Tabellenspalte angelegt.

    PHP
    1. $ausgabe .= ' <td>' . $lang['navigationselemente_ip'] . '</td>' . "\n";


    Auch den Inhalt der Ausgabe habe ich bereits bearbeitet.


    PHP
    1. $ausgabe .= ' <td><a href="' . htmlspecialchars($url . $img_ordner . $verzeichnis_daten[$i]) . '" target="_blank">' . $verzeichnis_daten[$i] . '</a></td>' . "\n"; }
    2. $ausgabe .= ' <td>' . fs_convert($document_root . $img_ordner . $verzeichnis_daten[$i], 2) . '</td>' . "\n";
    3. $ausgabe .= ' <td>' . date("d.m.Y H:i", last_change($document_root . $img_ordner . $verzeichnis_daten[$i])) . '</td>' . "\n"; if ($delete_link == 1) { $ausgabe .= ' <td><a href="' . htmlspecialchars($_SERVER["PHP_SELF"]) . '?file=' . $verzeichnis_daten[$i] . '&tn=TN' . $verzeichnis_daten[$i] . '&loechen=1" rel="nofollow">' . $lang['navigationselemente_loeschen'] . '</td>' . "\n";
    4. $ausgabe .= ' <td>' . $_SERVER['REMOTE_ADDR'] . '</td>' . "\n"; }
    5. $ausgabe .= '</tr>' . "\n";

    Neu dazu gekommen ist

    PHP
    1. . $_SERVER['REMOTE_ADDR'] .

    Das Problem nun ist aber, dass nicht die IP des Uploaders hinterlegt wird, sondern meine eigene, bzw. dessen, der die Seite grad betrachtet.

    Wie muss ich die Ausgabe gestalten, damit die IP des Uploaders gespeichert wird?

  • Das ist der Code der kompletten Ausgabe.


    Also es wird DIE IP angezeigt, die grade auf die Tabelle schaut.
    Also, wenn du z.B. schaust, bekommst du Deine eigene angezeigt.

  • btw: Script kann man oben kostenlos als ZIP runterladen.
    Glaube, da kann man besser lesen. Die Zeilen sind hier zerschossen.

    und meine zweite und eher sekundäre Frage ist, ob man die Tabelle so sortieren kann, dass es nach Datum sortiert wird.

  • zu 1. Ja habe ich gerade runtergeladenund kucke. Da du aber sagst das immer die ip angezeigt wirdder gerade kuckt ,dann ist dochklardaser die daten nicht aus den speicher holt. Hast du mal gekuckt ob die ip gespeichert wird ?Wenn die nicht gespeichert wird kannst du die ja nicht abfragen.


    Ich kucke mal gerade das Script an wie und was gespeichert wird.


    zu 2 Ja das geht auch.


    EDIT: Da das Script nur das Bild speichert und sonst keine Datein anlegt kannst du die Ip adresse nichtso einfach speichern. Du must dafür eine datei erstellen wo die ip adresse gespeichert werden. An besten und am einfachsten wäre das umzubauen mit datenbank.


    Es geht auch 0815 mit Textdocument aber so wie du das vor hattest geht es nicht.

    Wenn es jetzt keine Ip Adresse wäre hätte man es so machen können das man die Info mit in der Url Schreibt. Aber mit fremden Ip adressen macht man sowas nicht

  • nein in der URL möchte ich es nicht haben. Das wäre ein nogo.
    Die wird ja von anderen ebenfalls gesehen.

    Von den anderen Möglichkeiten habe ich keine Ahnung. Soweit bin ich noch nicht :)

    Zur Reihenfolge: ich habe in dem Script keinen Anhaltspunkt gefunden, wo nach er geht.
    Also soviel schonmal: Ich habe als Einstellung genommen, dass er in die URL nicht den eigentlichen Bildernamen nimmt, sondern eine fortlaufende Zahl.
    Die ist aber nicht fortlaufend, sondern zufällig. Und danach sortiert er.

    Kann man das beeinflussen?

  • was meinst du mit beeinflussen ? Eine fortlaufene Zahl die nicht durcheinander ist ?


    Das script speichertdas Bild ganz normal als Bild Datei.Dadurch kann man jetzt wieder mit einen Script die Größe,Speicherungs Datum bzw änderungsdatum und Bildformat auslesen. Mehr geht da glaube ich auch nicht. Zusatzinfos wie eine ip adresse die du haben willst ,odereinen Namen von den User der sie Speichert brauchst du was womit man es speichern tut.

    Optimal wären Datenbanken weil damit vieles einfacher ist.Man kann aber auch in deinen Fall ein Textdocument verwenden wo man noch Infos speichern kann.

    Ab einer gewisse Anzahl von Datein sollte man aber irgendwann mal Datenbanken nehmen weil es auch schneller geht die zu durchsuchen

  • Also mit beeinflussen meine ich, dass er nicht eine beliebige Zahl erstellt als Bildname, sondern eine fortlaufende.
    Danach, so siehts aus, wird die Reihenfolge bestimmt. Das wäre meiner Meinung nach die einfachste Methode.

    bloß habe ich keine Ahnung, wie man das bewerkstelligen soll.

    Ich werde gleich nochmal schauen, ob ich die Stelle finde.

    in der config.php kann man einstellen:

    $dateiname_dynamisch = 1;


    bei =0 nimmt der den Bildnamen, wie auf dem Rechner gespeichert.



    in der processing.php wird in der Zeile 61 (hier ab 17) der Wert ausgegeben.

    Demnach ist die Zeile


    PHP
    1.       $filename = "datei_" . time() . "." . $path_parts["extension"];

    dafür zuständig.

    habe eben eine Datei hochgeladen. Die endet mit datei_1540416417.png


    Also mit .time hat das nicht viel zutun.



    ---

    Das mit der IP: Wie muss denn dieses Textdokument aussehen? Ich habe da echt keine Ahnung.

  • Also mit .time hat das nicht viel zutun.

    Das mit der IP: Wie muss denn dieses Textdokument aussehen? Ich habe da echt keine Ahnung.

    Doch. Das istder Timestamp. Googel mal danach.wenn du die Zahl umwandelst bekommst du datum und zeit angezeigt. Die Zahl wird auch immer größer und man könnte das auch zum sortieren nehmen. Ich bin gerade dabei zu kucken wie ich ohne große änderung die ip in ein textdocument speichern kann. Im Link ist mist und mache ich nicht.


    Willst du das aufsteigend oder absteigend nach Datum sortiert haben ?

  • Mahlzeit.


    Ich werkle grad´ an der fortlaufenden Zahl, die als Bildername generiert werden soll. Soweit ich das entziffern kann, müsste es funktionieren, tut es aber nicht.


    Hier erstmal der Code



    Bis Zeile 10 läuft alles wie geschnitten Brot.
    Aber bei dem nächsten Bild, benennt er die Datei ebenfalls mit Bild001 und überschreibt das vorhandene.


    Scheint so, dass er den Abgleich überhaupt nicht macht.


    Mit folgender Schreibweise hat er es auch nicht gewollt


    PHP
    1. //Pfad zum Upload$new_path = $img_ordner.$filename.$extension;//Neuer Dateiname falls die Datei bereits existiertif(file_exists($new_path)) { //Falls Datei existiert, hänge eine Zahl an den Dateinamen do { $new_path = $img_ordner.$filename.sprintf ("%03d",$num).'.'.$extension; sprintf ("%03d",$num++);


    Der Pfad ist aber richtig. Aus der Config.php


    PHP
    1. * Ordner zum Speichern der Bilder bzw. Datein * Beispiel $img_ordner = '/img/'; */$img_ordner = '/img/';

    habe eben auch bei Zeile 7 statt $filename, $bilder angegeben und dies bei Zeile 10 mit abgeändert.
    Dachte, vllt beisst sich das. Doch trotzdem immer noch Bild001

  • Richtig debuggen


    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
    3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
    4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
    6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
  • Hallo und Danke für die Info.

    ich habe die Zeilen eingefügt. Teilweise mit Hilfe von php.net


    Es werden keine Fehler angegeben oder angezeigt. Habe als Gegenprobe mal ein Fehler eingebaut und dieser wurde auch mit Zeilennummer angegeben.

    Das Hochladen und Nummerieren klappt ja auch ohne Fehler. Und ich bin mir auch sicher, dass die Abfrage der Bildnamen erfolgt. Nur findet er wohl keine identischen Bilder und führt das Script dort fort.




  • ok also ich bin mal ein Stück weiter gekommen (beim Fehler eingrenzen)


    Hier der gesamte Code:



    Ich habe in die Logs geschaut. Dort bekomme ich folgende Fehlermeldung:


    Zitat


    25-Oct-2018 02:13:49, 8, Undefined variable: extension, 73, /var/www/vhosts/meinedomain.de/v307/upload/processing.php

    25-Oct-2018 02:13:49, 8, Undefined index: navigationselemente_noch_eine_datei, 108, /var/www/vhosts/meinedomain.de/v307/upload/processing.php

    processing.php ist das, was oben eingefügt wurde.
    108 wurde von mir nicht geändert.

    Und 73 ist eben der Pfad, wo der Vergleich sein soll.

    Habe diese nun abgeändet in


    PHP
    1. $new_path = $img_ordner.$filename.$path_parts["extension"];

    nun kommt nur noch die letzte Fehlermeldung


    Zitat


    25-Oct-2018 02:13:49, 8, Undefined index: navigationselemente_noch_eine_datei, 108, /var/www/vhosts/meinedomain.de/v307/upload/processing.php

    Jedoch kenn ich den Grund dafür. Ich habe die $lang['navigationselemente_noch_eine_datei'] im Lang Ordner auskommentiert. Damit wird nach dem Upload kein Link angezeigt, dass man noch eine Datei hochladen kann.


    ich lese mich grad ein, wie und wo ich die echo var einsetzen kann/muss.

  • Die Sortierung habe ich nun fertig.
    In der file_list mussten 2 Werte umgeschrieben werden.

    Somit ist die Herausforderung mit den aufsteigenden Namen abgeschrieben.

    Das mit der IP und der Datenbank schau ich mir noch genauer an. Denk Link, den du mir gestern gegeben hast hab ich ja.

    Sobald ich Zeit habe, werde ich mich da durcharbeiten.