Es hält mich immer die gleiche Fehlermeldung, wenn ich nicht einen Avatar hochladen und einen Standard 'avatar1.jpg' behalten möchte. "Ungültiger Dateityp!" Was könnte falsch sein? Wenn ich einen Avatar hochlade, funktioniert es gut.Hochladen von Standard-Avataren mit PHP
Dieser Code ist die Funktion, die in der functions.php bleibt
public function uploadAvatar(){
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["avatar"]["name"]);
$extension = end($temp);
if ((($_FILES["avatar"]["type"] == "image/gif")
|| ($_FILES["avatar"]["type"] == "image/jpeg")
|| ($_FILES["avatar"]["type"] == "image/jpg")
|| ($_FILES["avatar"]["type"] == "image/pjpeg")
|| ($_FILES["avatar"]["type"] == "image/x-png")
|| ($_FILES["avatar"]["type"] == "image/png"))
&& ($_FILES["avatar"]["size"] < 1000000)
&& in_array($extension, $allowedExts)) {
if ($_FILES["avatar"]["error"] > 0) {
redirect('register.php', $_FILES["avatar"]["error"], 'error');
} else {
if (file_exists("images/avatars/" . $_FILES["avatar"]["name"])) {
redirect('register.php', 'File already exists', 'error');
} else {
move_uploaded_file($_FILES["avatar"]["tmp_name"],
"images/avatars/" . $_FILES["avatar"]["name"]);
return true;
}
}
}
else {
redirect('register.php', 'Invalid File Type!', 'error');
}
}
Dieser Code die Funktion wird immer "if ($ user-> uploadAvatar()) {...}" einrichten ein Standardbild, wenn nichts hochgeladen wird.
if(isset($_POST['register-input'])){
//Create Data Array
$data = array();
$data['name'] = $_POST['name'];
$data['email'] = $_POST['email'];
$data['username'] = $_POST['username'];
$data['password'] = md5($_POST['password']);
$data['password2'] = md5($_POST['password2']);
$data['about'] = $_POST['about'];
$data['last_activity'] = date("Y-m-d H:i:s");
//Required Fields
$field_array = array('name','email','username','password','password2');
if($validate->isRequired($field_array)){
if($validate->isValidEmail($data['email'])){
if($validate->passwordsMatch($data['password'],$data['password2'])){
//Upload Avatar Image
if($user->uploadAvatar()){
$data['avatar'] = $_FILES["avatar"]["name"];
} else{
$data['avatar'] = 'avatar1.jpg';
}
//Register User
if($user->register($data)){
redirect('index.php', 'You are registered and can now log in', 'success');
} else {
redirect('index.php', 'Something went wrong with registration', 'error');
}
} else {
redirect('register.php', 'Your passwords did not match', 'error');
}
} else {
redirect('register.php', 'Please use a valid email address', 'error');
}
} else {
redirect('register.php', 'Please fill in all required fields', 'error');
}
}
Danny Sie sagten, Sie haben versucht, meinen Code und es würde nicht funktionieren, wenn es keinen Upload gab. Betritt der Skriptausführungspfad mit meiner Lösung den '$ data ['avatar'] = 'avatar1.jpg'-Pfad? Welchen Fehler bekommst du? – BeetleJuice
Ich bekomme diesen Fehler eigentlich, es liegt in der Funktion. else { Umleitung ('register.php', 'Ungültiger Dateityp!', 'Fehler'); } } – Danny
hast du meinen Codeblock ganz am Anfang der Funktion platziert? (nicht der Anfang des Hauptskriptes). Wenn ja, was erscheint, wenn Sie 'print_r ($ _ FILES ['avatar'])' am Anfang dieser Funktion ausführen, wenn Sie keine Datei hochgeladen haben? – BeetleJuice