PHP unklar
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
benutzername
bild
bilddatei
datei
doppelten eintrge
eintrag
email
error
fehler
gre
image
insert
kategorie
leer error
nachname
pawort
variable
verzeichnis
vorname
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Stimmt.
Musst du das
<? if($error!='') // ist error immernoch leer? { echo $error; //wenn nicht error ausgeben }else{ // sonst dateiupload if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { print 'Datei ist gültig und wurde erfolgreich hochgeladen. <br>Debugginginfo:n'; print '<br>'; print 'Name: '.$_FILES['userfile']['name'].'<br>'; print 'Größe: '.$_FILES['userfile']['size'].'<br>'; print 'Typ: '.$_FILES['userfile']['type'].'<br>'; }else{ die('Fehler beim Dateiupload'); } // und eintrag in datenbank ?>
durch das
<? if($error!='') // ist error immernoch leer? { echo $error; //wenn nicht error ausgeben }else{ if($datei_name!='kleines.gif') { // sonst dateiupload if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { print 'Datei ist gültig und wurde erfolgreich hochgeladen. <br>Debugginginfo:n'; print '<br>'; print 'Name: '.$_FILES['userfile']['name'].'<br>'; print 'Größe: '.$_FILES['userfile']['size'].'<br>'; print 'Typ: '.$_FILES['userfile']['type'].'<br>'; }else{ die('Fehler beim Dateiupload'); } } // und eintrag in datenbank ?>
ersetzen.
Nun sollte es so gehn wie du das haben willst. Allerdings wird die MAX_FILLE_SIZE von 3mb noch nicht beachtet. Kannst du ja aber ohne Probleme noch nachrüsten.
Beitrag geaendert: 5.4.2007 12:18:00 von tct -
habe ich gemacht und ist der gleiche Fehler. das ist der aktuelle Code:
<? if(!isset($_POST['senden'])) { ?> <form enctype='multipart/form-data' action='#' method='post'> <input type='hidden' name='MAX_FILE_SIZE' value='3000000'> <b> Vorname:<input type='text' name='vorname' size='25'> <br> Nachname:<input type='text' name='nachname' size='25'> <br> E-Mail:<input type='text' name='email' size='25'> <br> Homepage:<input type='text' name='homepage' size='25'> <br> <font size='1'>Dateigröße: max. 3MB erlaubt sind: *.gif | *.jpg | *.png</font></b> Datei:<input name='userfile' type='file' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6' size='20'><br> <input type='submit' name='senden' value='upload' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6'> </form> <?php }else{ $data = $_FILES['userfile']['name']; $vorname = addslashes($_POST['vorname']); $nachname = addslashes($_POST['nachname']); $email = addslashes($_POST['email']); $homepage = addslashes($_POST['homepage']); $error=''; // error ist am Anfang leer //Deklaration der gültigen typen - Hier könnt ihr weitere hinzufügen $mimearray = array('image/gif','image/jpeg','image/jpg','image/png'); //Upload verzeichnis $uploaddir = 'uploadbilder/'; // Zuerst bauen wir eine Verbindung zur Datenbank auf $verbindung = mysql_connect ('mysql.lima-city.de','USER71899', '***') OR die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch'); mysql_select_db('db?71899?1') or die ('Die Datenbank existiert nicht.'); // Ab jetzt fängt die Spamüberprüfung an, damit es keine doppelten Einträge gibt if(!preg_match('!^http://!i',$homepage) && $homepage!='') { $hompage='http://'.$hompage; } if ($vorname == '') //wenn vorname leer { $error.= 'Bitte geben Sie ihren Vornamen ein.<br>' ; } if ($nachname == '') //wenn Nachname leer { $error.= 'Bitte geben Sie ihren Nachnamen ein.<br>'; } if($email=='') { $error.='Bitte email-Adresse angeben'; } if ($data!='') //wenn bilddatei angegeben ist { if (file_exists ('uploadbilder/'.$data)) // ist bilddatei schon vorhanden? { $error.= 'Diese Datei existiert bereits. Bitte benennen Sie die Datei um!<br>' ; }elseif(!in_array($_FILES['userfile']['type'],$mimearray)){ //ist der dateityp erlaubt? $error.= $_FILES['userfile']['name'].' - '.$_FILES['userfile']['type'].' ist nicht für den Upload gestatet.<br>'; }else{ //wenn alles passt, name des bildes in neue variable $datei_name=$data['userfile']['name']; } }else{ //wenn kein bild angegeben ist $datei_name='keines.gif'; } if($error!='') // ist error immernoch leer? { echo $error; //wenn nicht error ausgeben }else{ if($datei_name!='kleines.gif') { // sonst dateiupload if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { print 'Datei ist gültig und wurde erfolgreich hochgeladen. <br>Debugginginfo:n'; print '<br>'; print 'Name: '.$_FILES['userfile']['name'].'<br>'; print 'Größe: '.$_FILES['userfile']['size'].'<br>'; print 'Typ: '.$_FILES['userfile']['type'].'<br>'; }else{ die('Fehler beim Dateiupload'); } } // und eintrag in datenbank $eintrag = "INSERT INTO uploadbilder (hompage,bild,vorname,nachname,email) VALUES ('$homepage','$datei_name','$vorname','$nachname','$email')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo 'Eintrag erfolgreich in die Datenbank eingetragen.'; }else{ die('Fehler beim Eintragen in die Datenbank'); } } } ?>
Fehlermeldung: Fehler beim Dateiupload
Fehlermeldung wenn ich ein Gif Bild einfüge: Fatal error: Cannot use string offset as an array in /home/webpages/lima-city/itak4ever/html/upload2.php on line 62
Fehlermeldung wenn ich ein jpg Bild einfüge : 00de5a3608df9ad5169b8a3949b0624b.jpg - image/pjpeg ist nicht für den Upload gestatet.
Ich hoffe, dass ihr mir weiterhin helft. Schon mal danke.
Beitrag geaendert: 5.4.2007 12:24:36 von itak4ever -
Also mit diesem code hab ich es grade probiert und es geht ohne Probleme auf meinem lokalen Server. Ich kann alle drei und auch nur diese Dateitypen hochladen. Und der Fehler "Fehler beim Dateiupload" kam zu Stand, weil dort ein l zu viel war.
<? if(!isset($_POST['senden'])) { ?> <form enctype='multipart/form-data' action='#' method='post'> <input type='hidden' name='MAX_FILE_SIZE' value='3000000'> <b> Vorname:<input type='text' name='vorname' size='25'> <br> Nachname:<input type='text' name='nachname' size='25'> <br> E-Mail:<input type='text' name='email' size='25'> <br> Homepage:<input type='text' name='homepage' size='25'> <br> <font size='1'>Dateigröße: max. 3MB erlaubt sind: *.gif | *.jpg | *.png</font></b> Datei:<input name='userfile' type='file' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6' size='20'><br> <input type='submit' name='senden' value='upload' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6'> </form> <?php }else{ $data = $_FILES['userfile']['name']; $vorname = addslashes($_POST['vorname']); $nachname = addslashes($_POST['nachname']); $email = addslashes($_POST['email']); $homepage = addslashes($_POST['homepage']); $error=''; // error ist am Anfang leer //Deklaration der gültigen typen - Hier könnt ihr weitere hinzufügen $mimearray = array('image/gif','image/jpeg','image/png'); //Upload verzeichnis $uploaddir = 'uploadbilder/'; // Zuerst bauen wir eine Verbindung zur Datenbank auf $verbindung = mysql_connect ('mysql.lima-city.de','USER71899', '***') OR die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch'); mysql_select_db('db?71899?1') or die ('Die Datenbank existiert nicht.'); // Ab jetzt fängt die Spamüberprüfung an, damit es keine doppelten Einträge gibt if(!preg_match('!^http://!i',$homepage)) { $homepage='http://'.$homepage; } if ($vorname == '') //wenn vorname leer { $error.= 'Bitte geben Sie ihren Vornamen ein.<br>' ; } if ($nachname == '') //wenn Nachname leer { $error.= 'Bitte geben Sie ihren Nachnamen ein.<br>'; } if ($data!='') //wenn bilddatei angegeben ist { if (file_exists ('uploadbilder/'.$data)) // ist bilddatei schon vorhanden? { $error.= 'Diese Datei existiert bereits. Bitte benennen Sie die Datei um!<br>' ; }elseif(!in_array($_FILES['userfile']['type'],$mimearray)){ //ist der dateityp erlaubt? $error.= $_FILES['userfile']['name'].' - '.$_FILES['userfile']['type'].' ist nicht für den Upload gestatet.<br>'; }else{ //wenn alles passt, name des bildes in neue variable $datei_name=$data; } }else{ //wenn kein bild angegeben ist $datei_name='keines.gif'; } if($error!='') // ist error immernoch leer? { echo $error; //wenn nicht error ausgeben }else{ if($datei_name!='keines.gif') { // sonst dateiupload if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) { print 'Datei ist gültig und wurde erfolgreich hochgeladen. <br>Debugginginfo:n'; print '<br>'; print 'Name: '.$_FILES['userfile']['name'].'<br>'; print 'Größe: '.$_FILES['userfile']['size'].'<br>'; print 'Typ: '.$_FILES['userfile']['type'].'<br>'; }else{ die('Fehler beim Dateiupload'); } } // und eintrag in datenbank $eintrag = "INSERT INTO uploadbilder (hompage,bild,vorname,nachname,email) VALUES ('$homepage','$datei_name','$vorname','$nachname','$email')"; $eintragen = mysql_query($eintrag); if($eintragen == true) { echo 'Eintrag erfolgreich in die Datenbank eingetragen.'; }else{ die('Fehler beim Eintragen in die Datenbank'); } } } ?>
Beitrag geaendert: 5.4.2007 13:58:35 von tct -
habe den code hochgeladen unter http://itak4ever.lima-city.de/upload3.php und er geth net kannst du mir den mal vll per E-MAil an andre.dieme@gmx.de schicken??? vll. hat lima ja wieder " in 'umgewandelt. danke
-
Gut, ich schicks dir mal.
Hab noch ein paar Variablen vereinfacht, aber sonst alles unverändert gelassen. -
Das mit den regulären Ausdrücken war schon richtig. Umsetzen kannst du das dann so:
<?php if (preg_match('!^http://!i',$homepage)) { //Aktion, wenn $homepage http:// enthält } else { //Aktion, wenn $homepage http:// nicht enthält } ?>
edit:
Wie soll strpos() funktionieren, wenn http:// am Anfang von $homepage steht (quasi 0 rauskommt)?
Beitrag geaendert: 4.4.2007 21:17:28 von sandrock-jonas
Blöd nur, wenn in der Adresse vielleicht nicht am Anfang "http://" vorkommt sondern als GET-Variable angehängt.
Deswegen empfehle ich folgendes.
if(substr($homepage, 0, 7) != 'http://') $homepage = 'http://'.$homepage;
Edit: *gnarf* Sowas kommt davon, wenn man voreilig schnell antwortet... :D
Beitrag geaendert: 5.4.2007 15:52:49 von i-spacke -
Das mit den regulären Ausdrücken war schon richtig. Umsetzen kannst du das dann so:
<?php if (preg_match('!^http://!i',$homepage)) { //Aktion, wenn $homepage http:// enthält } else { //Aktion, wenn $homepage http:// nicht enthält } ?>
edit:
Wie soll strpos() funktionieren, wenn http:// am Anfang von $homepage steht (quasi 0 rauskommt)?
Beitrag geaendert: 4.4.2007 21:17:28 von sandrock-jonas
Blöd nur, wenn in der Adresse vielleicht nicht am Anfang "http://" vorkommt sondern als GET-Variable angehängt.
Deswegen empfehle ich folgendes.
if(substr($homepage, 0, 7) != 'http://') $homepage = 'http://'.$homepage;
Genau aus diesem Grund ist das Dach (^) am Anfang des regulären Ausdrucks. Dieses bedeutet den Anfang der zu durchsuchenden Zeichenkette (true wird also nur dann zurückgegeben, wenn http:// am Anfang der Zeichenkette steht). Aber substr() ist wahrscheinlich trotzdem sinnvoller, weil es schneller sein dürfte.
Aber wenn wir sowieso gerade beim Anfang der Zeichenkette sind, würde ich dir empfehlen, noch ein trim() einzubauen. Quasi so:
<?php $homepage = trim($homepage); if(substr($homepage, 0, 7) != 'http://') $homepage = 'http://'.$homepage; ?>
Dadurch löschst du Leerzeichen am Anfang und am Ende von $homepage.
Beitrag geaendert: 5.4.2007 15:28:23 von sandrock-jonas -
[php]<?
if(!isset($_POST['senden']))
{
?>
<form enctype='multipart/form-data' action='#' method='post'>
<input type='hidden' name='MAX_FILE_SIZE' value='3000000'>
<b>
Vorname:<input type='text' name='vorname' size='25'> <br>
Nachname:<input type='text' name='nachname' size='25'> <br>
E-Mail:<input type='text' name='email' size='25'> <br>
Homepage:<input type='text' name='homepage' size='25'> <br>
<font size='1'>Dateigröße: max. 3MB erlaubt sind: *.gif | *.jpg | *.png</font></b>
Datei:<input name='userfile' type='file' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6' size='20'><br>
<input type='submit' name='senden' value='upload' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6'>
</form>
<?php
}else{
$data = $_FILES['userfile']['name'];
$vorname = addslashes($_POST['vorname']);
$nachname = addslashes($_POST['nachname']);
$email = addslashes($_POST['email']);
$homepage = addslashes($_POST['homepage']);
$error=''; // error ist am Anfang leer
//Deklaration der gültigen typen - Hier könnt ihr weitere hinzufügen
$mimearray = array('image/gif','image/jpeg','image/png');
//Upload verzeichnis
$uploaddir = 'uploadbilder/';
// Zuerst bauen wir eine Verbindung zur Datenbank auf
$verbindung = mysql_connect ('mysql.lima-city.de','USER71899', '***') OR die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch');
mysql_select_db('db?71899?1') or die ('Die Datenbank existiert nicht.');
// Ab jetzt fängt die Spamüberprüfung an, damit es keine doppelten Einträge gibt
if(!preg_match('!^http://!i',$homepage))
{
$homepage='http://'.$homepage;
}
if ($vorname == '') //wenn vorname leer
{
$error.= 'Bitte geben Sie ihren Vornamen ein.<br>' ;
}
if ($nachname == '') //wenn Nachname leer
{
$error.= 'Bitte geben Sie ihren Nachnamen ein.<br>';
}
if ($data!='') //wenn bilddatei angegeben ist
{
if (file_exists ('uploadbilder/'.$data)) // ist bilddatei schon vorhanden?
{
$error.= 'Diese Datei existiert bereits. Bitte benennen Sie die Datei um!<br>' ;
}elseif(!in_array($_FILES['userfile']['type'],$mimearray)){ //ist der dateityp erlaubt?
$error.= $_FILES['userfile']['name'].' - '.$_FILES['userfile']['type'].' ist nicht für den Upload gestatet.<br>';
}else{ //wenn alles passt, name des bildes in neue variable
$datei_name=$data;
}
}else{ //wenn kein bild angegeben ist
$datei_name='keines.gif';
}
if($error!='') // ist error immernoch leer?
{
echo $error; //wenn nicht error ausgeben
}else{
if($datei_name!='keines.gif')
{
// sonst dateiupload
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir.$data))
{
print 'Datei ist gültig und wurde erfolgreich hochgeladen. <br>Debugginginfo:n';
print '<br>';
print 'Name: '.$_FILES['userfile']['name'].'<br>';
print 'Größe: '.$_FILES['userfile']['size'].'<br>';
print 'Typ: '.$_FILES['userfile']['type'].'<br>';
}else{
die('Fehler beim Dateiupload');
}
}
// und eintrag in datenbank
mysql_query("INSERT INTO uploadbilder (hompage,bild,vorname,nachname,email) VALUE('$homepage','$datei_name','$vorname','$nachname','$email')");
if($eintragen == true)
{
echo 'Eintrag erfolgreich in die Datenbank eingetragen.';
}else{
die('Fehler beim Eintragen in die Datenbank');
}
}
}
?>[/php]
Immer wenn ich etwas eingebe(also egal ob mit oder ohne Bild) es kommt die Fehlermeldung Fehler beim Eintragen in die Datenbank. Woran liegt das??
Mein Datenbankname:db?71899?1
Mein Tabellenname:uploadbilder
Meine Spalten/Felder:bilderid bild vorname nachname email homepage
Adresse:mysql.lima-city.de
BN:USER71899
-
Es muss VALUES heißen nicht VALUE. Steht aber in meinem Script auch so drinne.
Ach und natürlich musst du $einfügen schon noch definieren mit $einfügen=mysql_query..., sonst ist $einfügen natürlich false und es gibt den Fehler aus.
Beitrag geaendert: 5.4.2007 21:00:47 von tct -
Danke an tct. Hat auch net geklappt.
Aber mein alter Script geht, bisauf das unter dem Formular eine 1 steht.
[php]<form enctype='multipart/form-data' action='#' method='post'>
<font face='Verdana'>
<input type='hidden' name='MAX_FILE_SIZE' value='3000000'>
</font>
<b>
Vorname:<input type='text' name='vorname' size='25'> <br>
Nachname:<input type='text' name='nachname' size='25'> <br>
E-Mail:<input type='text' name='email' size='25'> <br>
Homepage:<input type='text' name='homepage' size='25'> <br>
<font size='1'>Dateigröße: max. 3MB erlaubt sind: *.gif | *.jpg | *.png</font></b><font size='2'><br>
</font>Datei:<input name='userfile' type='file' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6' size='20'><font size='2'>
</font>
</select><font size='2'> </font>
<br><input type='submit' name='senden' value='upload' style='font-family: Verdana; font-size: 10pt; border: 1px dotted #000000; background-color: #5F86B6'></form>
<?php
// Zuerst bauen wir eine Verbindung zur Datenbank auf
$verbindung = mysql_connect ('mysql.lima-city.de','USER71899', 'andre')
or die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch');
mysql_select_db('db?71899?1') or die ('Die Datenbank existiert nicht.');
$data = $_FILES['userfile']['name']; // Variable für Filename
$kategorie = $_POST['kategorie']; // Variable für Kategorie
$vorname = addslashes($vorname);
$nachname = addslashes($nachname);
$email = addslashes($email);
$homepage = addslashes($homepage);
// Ab jetzt fängt die Spamüberprüfung an, damit es keine doppelten Einträge gibt
if ($vorname == '' && 'upload' == $_POST['senden']) {
echo 'Bitte geben Sie ihren Vornamen ein.' ;
} else
{
if ($vorname == '' && 'upload' == $_POST['senden']) {
echo 'Bitte geben Sie ihren Nachnamen ein.';
} else {
if ($data=='')
{
echo $verbindung = mysql_connect ('mysql.lima-city.de','USER71899', 'andre')
or die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch');
mysql_select_db('db?71899?1')
or die ('Die Datenbank existiert nicht.');
mysql_query("INSERT INTO uploadbilder (bild,vorname, nachname, email,homepage) VALUE('keines.gif' ,'$vorname' ,'$nachname' ,'$email' ,'$homepage')");
}
else
{
if (file_exists ('uploadbilder/$data')) {
echo 'Diese Datei existiert bereits. Bitte benennen Sie die Datei um!' ;
}
else
{
//Deklaration der gültigen typen - Hier könnt ihr weitere hinzufügen
$mimearray = array('image/gif');
//Upload verzeichnis
$uploaddir = 'uploadbilder/';
//Prüfen ob Formular gesendet wurde
if($_POST['senden']==true){
// Prüfung auf Gültigkeit des Vordeklarierten MimeTyps
if(in_array($_FILES['userfile']['type'],$mimearray))
{
// dateiupload
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploaddir . $_FILES['userfile']['name'])) {
print 'Datei ist gültig und wurde erfolgreich hochgeladen.' ;
mysql_query("INSERT INTO uploadbilder (bild,vorname, nachname) VALUE('keines.gif' ,'$vorname' ,'$nachname')");
{
echo 'Eintrag erfolgreich in die Datenbank eingetragen';
}
}else{
// Fehler beim Dateiupload
print 'Fehler beim Dateiupload';
}
}
else
{
//Fehlermeldung wenn Datei nicht den vordeklarierten MimeTypes entspricht
print $_FILES['userfile']['name'].' - '.$_FILES['userfile']['type'].' <br>ist nicht für den Upload gestatet';
}
}
}
}
}
}
?>
[/php]
Findet einer den Fehler?? -
Aber mein alter Script geht, bisauf das unter dem Formular eine 1 steht.
Das hatten wir schonmal:
<?php echo $verbindung = mysql_connect ('mysql.lima-city.de','USER71899', 'andre') or die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch'); ?>
zu
<?php $verbindung = mysql_connect ('mysql.lima-city.de','USER71899', 'andre') or die ('keine Verbindung möglich. Benutzername oder Passwort sind falsch'); ?>
Guck mal auf der ersten Seite, da steht das schonmal.
VALUES muss es trotzdem heißen, wie schon mehrfach erwähnt. Mit VALUE dürfte nichts passieren.
Übrigens: Die Codefunktion von Lima funktioniert mit [ code ] und [ /code ] (ohne Leerzeichen) und nicht mit [php][/php]. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage