Bildnamen wählen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Bildnamen wählen

    Für ein neue Projekt überlege ich schon seit längerem über die Namen der Bilder nach.
    Bei meinem alten Projekt hatte ich sie immer so benannt:
    pics/16/61/1661_1_t.jpg

    Bilderorder/die vorletzten 2 Zahlen der id/die letzten beiden Zahlen der Id/id_Bildnr_Größe.jpg
    Damit wurden die Bilder immer in verschiedene Order verteilt und lief soweit auch wunderbar.
    Der Vorteil: Ich brauchte die Namen der Bilder nicht in einer DB speichern.

    Doch beim neuen Projekt möchte ich die Bildernamen so gestalten, das man sie nicht erraten kann.
    Klar, ich könnte sie in eine DB packen. Und die ausgabe über eine image.php realisieren, die die Bilder jeweils mit einem md5 Namen aus der Db holt.

    Aber wenn ich auf einer Seite 50 Bilder anzeigen lassen möchte, erzeugt diese image.php ja 50 SELECT Abfragen um die Bilddaten zu ermitteln. Das schreckt mich bisschen ab.

    Wie würdet Ihr vorgehen, wenn ihr Bilder speichern müßt, wo man die Bildnamen nicht erraten darf? Und wo die Bilderausgabe auch bei vielen Bilder kein Problem ist.
    Gut geraten ist halb gewußt.

  • #2
    wenn ich das richtig verstehe mach einfach noch ne zufallszahl rein.

    pics/16/61/1661_1_t_{zufallszahl(en)}.jpg

    Kommentar


    • #3
      Hey, super. So einfach und effektiv. Ja sowas hatte ich gesucht. Ich nehme einfach md5 des Datums und schon habe ich ein guten code.

      pics/16/61/1661_1_t_{md5(datum)}.jpg

      Fertig. Dann kann keiner ein Foto erraten und ich brauche weder die Bilder noch die Bildernamen extra in eine DB speichern.

      Danke.
      Gut geraten ist halb gewußt.

      Kommentar


      • #4
        Original geschrieben von martinm79
        md5 des Datums ...
        Dann kann keiner ein Foto erraten ...
        Naja, kann man schon. Aber es wird sich wohl keiner die Mühe machen.

        Kommentar


        • #5
          Nabend,

          wenn ich heute ein Bild nach dem Schema abspeicher und es dann drei Tage später aufrufen möchte, hab ich doch eine andere MD5-Summe als noch vor drei Tagen. Sprich Du könntest doch nur die Bilder aufrufen welche am heutigen Tag erstellt wurden. Also wirst Du um eine Speicherung des Datums doch auch nicht drum rum kommen. Und dann kannst Du auch gleich den Dateinamen abspeichern.

          Oder hab ich was nicht mitbekommen?
          screennetz.de

          Kommentar


          • #6
            Du nimmst doch nicht das heutige Datum, sondern das Datum, an dem du das Bild erstellt hast.

            Kommentar


            • #7
              Original geschrieben von PHP-Desaster
              Du nimmst doch nicht das heutige Datum, sondern das Datum, an dem du das Bild erstellt hast.
              (Zumindest *sollte* er das ;D )

              Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

              bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
              Wie man Fragen richtig stellt

              Kommentar


              • #8
                Nur dann muss er doch schon wissen an welchem Tag er es erstellt hat. Sprich das muss doch irgendwo hinterlegt sein. Demzufolge kann er doch gleich den Bildnamen abspeichern.

                Oder stehe ich jetzt total auf dem Schlauch?
                screennetz.de

                Kommentar


                • #9
                  Das Datum ist aber auch für andere Dinge brauchbar, während der Dateiname in der Datenbank eigentlich nur unnötig Speicher frisst und auch ohne Probleme live berechnet werden kann~

                  Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                  bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                  Wie man Fragen richtig stellt

                  Kommentar


                  • #10
                    Ok wenn man es ganz genau nimmt stimmt das schon. Aber eine Spalte mehr oder weniger macht den braten aus meiner Sicht nun auch nicht mehr sonderlich fett.
                    screennetz.de

                    Kommentar


                    • #11
                      Naja, es ist schon deutlich mehr an Platzverbrauch... wenn man sich überlegt, was sonst noch so gespeichert wird, kann ein 20-30 stelliger String da locker ein Drittel bis Viertel vom Datensatz sein, demnach auch ein Drittel bis Viertel von der Tabelle.
                      Das ist bei vollkommen unterbelasteten Dedicated Servern, die 20*2MB Tabellen haben mit Queries, wo jeder normale DBA mit den Ohren auf der Tischplatte klebt, vollkommen egal; aber wenn die Tabelle dann auf einmal 500 MB hat, dann wären das schon 100 bis 200 MB und wenn es mehrere von der Sorte gibt...
                      Wie gesagt, ich persönlich tendiere dazu Tabellen möglichst von Anfang an zu optimieren, aber für die meisten Websiten hat das ungefähr so viel Relevanz wie das Wetter draußen - schlichtweg weil sie niemals eine Größe erreichen werden, wo der Server mal an seine Grenzen stößt~

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        Genauso sieht es aus. Wenn es nur 20 oder 1000 Bilder sind, ist das kein Problem den Namen zu speichern. Wenn es aber größere Ausnahmen nimmt, wäre ein gutes System besser um die Namen zu bilden.

                        pics/16/61/1661_1_t_{md5(datum)}.jpg

                        Das Datum nehme ich natürlich nicht von heute, sondern der Datensatz zu dem das Foto gehört, hat ein Datum, welches sich nicht ändert. Daraus nehme ich den md5 String. Das Datum brauche ich sowieso und denn kann ich es gleichzeitig als Namen verwenden.

                        Wenn ein Bild so heißen würde:
                        pics/16/61/kabjsowkau7skwohsndzhekd.jpg

                        Dann könnte man das Bild keinem Datensatz zuordnen.
                        So:
                        pics/16/61/1661_1_t_{md5(datum)}.jpg
                        Kann ich sogar den Datensatz zuorden.
                        Im Ordner hau ich noch eine .htaccess und fertig. Klar kann man das Bild erraten, aber bei 32 String wozu der Aufwand.

                        Wenn ich ein Bild erst freischalten möchte, schiebe ich alle Bilder erstmal in einen Ordner
                        pic/noch_freischalten/1661_1_t_{md5(datum)}.jpg

                        Dann kann ich alle Bilder durchgehen und auch freischalten. Weil ich da die id des Datensatzes am Anfang der Datei habe, kann ich es gezielt verschieben.
                        Eine super Lösung.

                        Ich könnte die Bilder zwar in einer Tabelle aufzeichen, aber denn nur für mich zur übersicht und administration. Zum Betrieb kann ich die Abfrage sparen.
                        Gut geraten ist halb gewußt.

                        Kommentar


                        • #13
                          Da ich mich zur zeit auch mit dem Thema beschäftige hätt ich dann aber noch ne kleine Frage zu der Sache:

                          Was mach ich wenn ich jetzt noch ne Bildkommentar speichern möchte?
                          Dann komm ich doch ansich nicht drum rum den Dateinamen samt kommentar in der DB abzuspeichern oder irre ich mich da?
                          Geht net gibts net...

                          Kommentar


                          • #14
                            Was mach ich wenn ich jetzt noch ne Bildkommentar speichern möchte?
                            Den speicherst du ganz normal mit dem Datum und dem Uploader usw. in der Datenbank. Das Bild (und der Dateiname/pfad) bleibt im Dateisystem.
                            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                            Kommentar


                            • #15
                              ei ob ich jetzt es Datum oder den Dateinamen in der DB ablegen spielt doch dann ansich keine Rolle. Versteh den Sinn irgentwie nicht.
                              Sorry wenn ich irgentwie bischen auf em Schlauch stehe. Irgent was muss ich ja zu der Datei abspeichern. Entweder ich baus datumund id im dateinamen ein und lege die beiden werte in die db, oder ich lege gleich den Dateinamen rein. Wo liegt da denn der unterschied?
                              Geht net gibts net...

                              Kommentar

                              Lädt...
                              X