php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 29-03-2013, 18:12
Nirobe
 Registrierter Benutzer
Links : Onlinestatus : Nirobe ist offline
Registriert seit: Mar 2013
Beiträge: 5
Nirobe befindet sich auf einem aufstrebenden Ast
Standard CSV PHP Gallerie Problem!!

Hallo Leute Ich Möchte eine kleine Bildergallerie machen.
Dazu habe ich (Weil ich mich mit Mysql nicht so auskenne) Mit php und CSv-Dateien Gearbeitet.Nach einloggen kommt man sofort auf eine Seite wo die Bilder Angezeigt werden oben ist dann noch die Möglichkeit ein neues bild anzulegen. Jetzt mein Problem Hochgeladen bekomme ich die Bilder mit dem Skript aber ich bekomme sie nicht in die CSV Datei in einen Img-Tag rein dass sie dann auch angezeigt werden.

Meine Codes:


menue.php (das ist die Gallerie seite):
<form action="menue.php" Method="POST">
<center>
<h1>Gallerie</h1>
<input type="submit" value="Neues Bild" name="neu">
<input type="submit" value="Löschen" name="delete">
</center>
</form>
<center>
<?php

$filename="Daten.csv";
$row=1;
if(($datei = fopen($filename, "r"))!==FALSE) {
while(($data = fgetcsv($datei, 1000, ";"))!==FALSE) {
$num = count($data);
$row++;
for($i=0;$i<$num;$i++) {
echo $data[$i].'<br>';
}
echo "<hr>";
}
fclose($datei);
}
?>
</center>
<?php
if(isset($_POST['neu'])) {
header ("Location: daten.php");
}
?>


daten.php (bilder upload script):
<form action="daten.php" method="FILES" enctype="multipart/form-data">
Ihr Bildnamen eintragen<input type="text" name="bn"><br>
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen" name="hochladen">
</form>

<?php
if (isset($_FILES['hochladen']))
{
$type = GetImageSize($_FILES['datei']['tmp_name']);
$size = $_FILES['datei']['size'];
$check = false;
if ($type['mime'] == 'image/jpeg' or $type['mime'] == 'image/gif')
{
$check = true;
}
if ($size < 1002400 && $check == true )
{
move_uploaded_file($_FILES['datei']['tmp_name'], "bilder/".$_FILES['datei']['name']);
$name=$_FILES['bn'];
$daten=$bild.";".$name;
$save = "Daten.csv";
$infos = fopen($save,"a");
fwrite($infos , $daten);
echo 'Bild erfolgreich hochgeladen!';

}

elseif ($size > 1002400)
{
echo 'Das Bild ist zu groß!'; }
elseif ($check == false)
{
echo 'Das Bild ist kein *.jpg oder *.gif';}
}
?>

Ich hoffe Ihr könnt mir helfen Bin schon am verzweifeln

LG Nirobe
Angehängte Dateien
Dateityp: php daten.php (939 Bytes, 48x aufgerufen)
Dateityp: php menue.php (578 Bytes, 33x aufgerufen)
Mit Zitat antworten
  #2 (permalink)  
Alt 29-03-2013, 19:36
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Du hast in der CSV nur zwei Felder mit bild und name?
Dann musst Du die auch so ausgeben.

PHP-Code:
echo "<img src=\"".$bild[$i]."\" alt=\"".$name[$i]."\">\n"
Tausche mal diesen Abschnitt

PHP-Code:
$row=1;
if((
$datei fopen($filename"r"))!==FALSE) {
while((
$data fgetcsv($datei1000";"))!==FALSE) {
$num count($data);
$row++;
for(
$i=0;$i<$num;$i++) {
echo 
$data[$i].'<br>';
}
echo 
"<hr>";
}
fclose($datei);

gegen diesen Code aus:

PHP-Code:
$row =  0;
$bis 20;

if((
$datei fopen($filename"r"))!== false) {

    while((
$data fgetcsv($datei0";"))!== false) {
    
        if (
$row $bis){        
            echo 
"<img src=\"".$data[0]."\" alt=\"".$data[1]."\"><hr>\n";
            
$row++;            
        }
    }
    
fclose($datei);

Da würde jetzt noch eine zusätzliche Bedingung fehlen, wenn mehr als $bis Image-URIs enthalten sind, ob zum Umblättern oder wie auch immer. Das hängt dann davon ab, wie die Galerie aufgebaut werden soll.

Geändert von Melewo (29-03-2013 um 21:48 Uhr)
Mit Zitat antworten
  #3 (permalink)  
Alt 29-03-2013, 23:27
Nirobe
 Registrierter Benutzer
Links : Onlinestatus : Nirobe ist offline
Registriert seit: Mar 2013
Beiträge: 5
Nirobe befindet sich auf einem aufstrebenden Ast
Standard

es ging mir eher um die Daten.php ob da fehler sind da die daten garnet in die csv datei geschrieben werden.
Mit Zitat antworten
  #4 (permalink)  
Alt 30-03-2013, 00:33
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nirobe Beitrag anzeigen
es ging mir eher um die Daten.php ob da fehler sind da die daten garnet in die csv datei geschrieben werden.
Kann ja auch nicht, dazu müsstest du ja $bild erst einmal irgendwo deklarieren und initialisieren. Einfach mal gleich nach dem öffenden PHP-Tag

PHP-Code:
error_reporting(E_ALL);
ini_set("display_errors"1); 
einfügen, dann sollten sich derartige Fehler eigentlich auch zu erkennen geben.
Mit Zitat antworten
  #5 (permalink)  
Alt 30-03-2013, 00:41
Nirobe
 Registrierter Benutzer
Links : Onlinestatus : Nirobe ist offline
Registriert seit: Mar 2013
Beiträge: 5
Nirobe befindet sich auf einem aufstrebenden Ast
Standard

Der Zeigt Garkeine Errormeldungen an
Mit Zitat antworten
  #6 (permalink)  
Alt 30-03-2013, 00:52
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Nirobe Beitrag anzeigen
PHP-Code:
$name=$_FILES['bn'];
$daten=$bild.";".$name;
$save "Daten.csv";
$infos fopen($save,"a");
fwrite($infos $daten); 
Jedenfalls sehe ich nicht, wo Du $bild bekannt machst und einen Wert zuweist, bevor Du $bild in die Datei zu schreiben versuchst.

Und dann weiß ich nicht, wie viele Fehler da noch enthalten sind. Eigentlich beginnt es bereits beim Formular. Habe extra noch einmal in einer neueren Printausgabe von selfhtml nachgeschlagen, für das Hochladen von Dateien ist nur die Methode Post erlaubt. Somit wäre schon die erste Zeile fehlerhaft:

Zitat:
Zitat von Nirobe Beitrag anzeigen
PHP-Code:
<form action="daten.php" method="FILES" enctype="multipart/form-data"
Falls Du da nur wahllos etwas zusammen kopiert hast, ohne zu wissen, was Du eigentlich tust, kann das sicherlich kaum etwas werden. Selbst wenn Du es zum Laufen bekommen solltest, so könntest Du Dir eine größere Sicherheitslücke schaffen.

Geändert von Melewo (30-03-2013 um 08:41 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 30-03-2013, 12:01
Nirobe
 Registrierter Benutzer
Links : Onlinestatus : Nirobe ist offline
Registriert seit: Mar 2013
Beiträge: 5
Nirobe befindet sich auf einem aufstrebenden Ast
Standard

Hallo Melewo
Du hattest natürlich recht hab die falsche Version hochgeladen wo ich bild noch nicht deklariert hatte.jetzt erhalte ich folgende Error Meldungen:

datei.php
Notice: Undefined index: datei in C:\Program Files\xampp\htdocs\public_html\Ausbildung\daten.php on line 10

Warning: getimagesize(): Filename cannot be empty in C:\Program Files\xampp\htdocs\public_html\Ausbildung\daten.php on line 10
PHP-Code:
$type GetImageSize($_POST['datei']['tmp_name']); 


Notice: Undefined index: datei in C:\Program Files\xampp\htdocs\public_html\Ausbildung\daten.php on line 11
PHP-Code:
$size $_POST['datei']['size']; 

Ich verstehen den Undefinierten index datei nicht so ganz, da ich ja nur die werte von oben aus dem Formular dadrin haben will.
Ich hoffe ich nerv dich nicht zu doll bin Anfänger.
Mit Zitat antworten
  #8 (permalink)  
Alt 30-03-2013, 12:47
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

PHP-Code:
<form action="daten.php" method="post" ... <!-- method="POST und nicht FILES!" 
                                            Bezieht sich auf HTTP-Request-Methode -->
...
</form>

<?php
error_reporting
(E_ALL);
ini_set("display_errors"1);

// Array zum Test mal ausgeben lassen, nur mal um zu schauen, was alles in "datei" enthalten ist.

echo "<pre>\n";
print_r($_FILES["datei"]);
echo 
"</pre>\n";

// $_FILES und nicht $_POST, bezieht sich auf superglobale Variablen.

$type GetImageSize($_FILES['datei']['tmp_name']);
$size $_FILES['datei']['size'];  

// Das sollte wieder Post sein:   
                        
echo $_POST['dn'];

Geändert von Melewo (30-03-2013 um 13:12 Uhr)
Mit Zitat antworten
  #9 (permalink)  
Alt 30-03-2013, 17:12
Guenni61
 Registrierter Benutzer
Links : Onlinestatus : Guenni61 ist offline
Registriert seit: Nov 2011
Ort: Viersen
Beiträge: 128
Guenni61 befindet sich auf einem aufstrebenden Ast
Standard

Hi Nirobe,

ich bezieh mich mal auf zwei Probleme, die du gepostet hast:

1. Jetzt mein Problem Hochgeladen bekomme ich die Bilder mit dem Skript,aber ich bekomme sie nicht in die CSV Datei in einen Img-Tag rein dass sie dann auch angezeigt werden.

2. es ging mir eher um die Daten.php ob da fehler sind da die daten garnet in die csv datei geschrieben werden.

Zu 1.

Du brauchst eigentlich nur den Bildnamen(oder eine Bezeichnung) und den Dateinamen, also z.B: Urlaub Kreta;kreta.jpg

Das img-Tag gibst du ja in der HTML/PHP-Seite aus.

Zu 2.

Ich würde Bildname und Dateiname in einem Array speichern und mit fputcsv in die Datei schreiben.

PHP-Code:
<?php
/*
* Der eigentliche Upload muss noch eingesetzt werden
*/
$file "pub/bilder_csv.csv";
if(isset(
$_POST['cmd'])){
 
$bild['bildname']=$_POST['bildname'];
 
$bild['bild']=$_FILES['myfile']['name'];
 
$f fopen($file,"a");
 
fputcsv($f,$bild,";");
 
fclose($f);
 
header('location:a_upload_csv.php');
}
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Datei-Upload</title>
</head>
<body>
<p>Bilder-Upload</p>
<form enctype="multipart/form-data" method="post" action="a_upload_csv.php">
Bildname: <input type="text" name="bildname">
Bild: <input type="file" name="myfile"><input type="submit" name="cmd" value="Hochladen">
</form>
<?php
if(!file_exists($file) || filesize($file)==0){
 echo 
'Datei '.$file.' ist nicht vorhanden, oder enthält keine Einträge.';
}else{
      
$f=fopen($file,"r");
      while(
$file_entry=fgetcsv($f)){
       
$file_entry_arr[]=$file_entry;
      }
      
fclose($f);
      foreach(
$file_entry_arr as $file_entry){
       foreach(
$file_entry as $bild_info){
        
$bild=explode(";",$bild_info);
        echo 
'<img src="bilder/'.$bild[1].'" alt="'.$bild[0].'" title="'.$bild[0].'" height="200">';
       }
      }
     }
?>
</body>
</html>
Einzubauen wäre hier noch der Upload selber, aber das klappt ja bei dir.

Gruß
Günni
Mit Zitat antworten
  #10 (permalink)  
Alt 30-03-2013, 19:37
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Musste mich da auch erst einmal etwas hineinfinden, weil ich damit noch nichts zu tun hatte. Langsam blicke ich etwas mehr durch. So wie es jetzt ausschaut, wird ja das Bild unter "bilder/".$_FILES['datei']['name'] gespeichert, wozu ein Verzeichnis "bilder" anzulegen wäre.

PHP-Code:
move_uploaded_file($_FILES['datei']['tmp_name'], "bilder/".$_FILES['datei']['name']);
$name=$_FILES['bn'];
$daten=$bild.";".$name
Die in die CSV zu schreibenden Daten bestünden dann aus $bild = bilder/".$_FILES['datei']['name']; und $name, bei dem es sich um keine File handelt, sondern um Input von Text. Somit sollte das wohl so aussehen:

PHP-Code:
$name $_POST['bn']; 
$_POST wäre aber noch zu trimmen und durch einen RegEx-Filter zu jagen, damit niemand ein-schoenes-<code>-bild als Name übermitteln kann. Die drei Zeilen im Zusammenhang könnten dann so aussehen:

PHP-Code:
move_uploaded_file($_FILES['datei']['tmp_name'], "bilder/".$_FILES['datei']['name']);
$bild "bilder/".$_FILES['datei']['name'];
$name $_POST['bn'];
$bild preg_replace("/[^a-zA-Z0-9\/._-]/","",$bild);
$name preg_replace("/[^a-zA-Z0-9_-]/","",$name);
$daten $bild.";".$name
Bin mir nun noch nicht sicher, ob beim ersten Teil noch eine weitere Prüfung erfolgen sollte, dass da niemand ein-image.jpg.exe oder so unterschieben kann oder ob die Prüfung mit GetImageSize genügt. Exe als Endung vielleicht nicht, doch ein Gif mit einer im Gif enthaltener Exe oder ein-image.jpg.js oder etwas in dieser Richtung würde ja auch schon genügen.

Das erste if Statement halte ich auch für fehleranfällig:

PHP-Code:
if (isset($_FILES['hochladen']))

Im Test erhielt ich mit "hochladen" und $_FILES nichts, nur mit $_POST, doch dafür trügt eine Abfrage von "datei" mit $_FILES, denn auch wenn keine Datei ausgewählt und hochgeladen wurde, so wird dennoch ein File-Array vom Formular übermittelt, nur enthält es dann die Anzahl der Fehler.

PHP-Code:
// Es wurde nichts ausgewählt und hochgeladen, nur der Button "Hochladen" geklickt.  

if (isset($_FILES['datei'])) 
{  
/*
  Array
  (
      [name] => 
      [type] => 
      [tmp_name] => 
      [error] => 4
      [size] => 0
  )
  */

Somit sollte wohl eher auf Error geprüft werden oder zusätzlich noch auf Error prüfen:

PHP-Code:
if ($_FILES['datei']['error'] == 0

Geändert von Melewo (31-03-2013 um 06:35 Uhr)
Mit Zitat antworten
  #11 (permalink)  
Alt 31-03-2013, 15:37
Nirobe
 Registrierter Benutzer
Links : Onlinestatus : Nirobe ist offline
Registriert seit: Mar 2013
Beiträge: 5
Nirobe befindet sich auf einem aufstrebenden Ast
Standard

Hallo
Ich hab es geschafft und alles läuft reibungslos ich wollte mich noch für deine Hilfe bedanken und die Scripte für alle hier bereitstellen


Liebe Grüße Nirobe
Angehängte Dateien
Dateityp: php menue.php (700 Bytes, 44x aufgerufen)
Dateityp: php daten.php (1,1 KB, 42x aufgerufen)
Mit Zitat antworten
  #12 (permalink)  
Alt 31-03-2013, 19:53
Melewo
 Registrierter Benutzer
Links : Onlinestatus : Melewo ist offline
Registriert seit: Jan 2013
Beiträge: 365
Melewo befindet sich auf einem aufstrebenden Ast
Standard

Das mit dem Erlauben von GIFs bei 'image/gif' würde ich mir noch einmal sehr gründlich überlegen. Nicht dass ich mich damit richtig auskennen würde, doch wenn ich lese, dass es durchaus möglich sein soll in GIFs Trojaner und Viren zu verpacken, dann würde ich halt aufs GIFs verzichten, bis ich es genauer wüsste:

Was bedeutet GIF?
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Problem mit .csv in .php hanf13 PHP Developer Forum 4 31-01-2006 14:25
Admin-Gallerie Problem broschizzl PHP Developer Forum 6 28-05-2005 22:11
Mini-Gallerie, Auflistungs-Problem boo-G PHP Developer Forum 6 26-01-2005 22:54
Problem mit Csv-export in phpmyadmin und Csv-import in Excel Bazi00 Off-Topic Diskussionen 4 05-08-2004 15:18
Problem beim Export von mySQL zu CSV! Excel öffnet die CSV mit leeren Zeilen! JogiWebster SQL / Datenbanken 10 24-01-2004 14:53

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 00:03 Uhr.