2017-05-07 1 views
-1
<form action = "<?php $_SERVER["PHP_SELF"];?>" class="register-form" method="post" name="form1" encype="multipart/form-data"> 
    <input type="text" placeholder="Username" name="username" maxlength="15" required/> 
    <input type="text" placeholder="Email Address" name="email" maxlength="30" required/> 
    <input type="password" placeholder="Password" name="password" maxlength="15" required/> 
    <input type="password" placeholder="Confirm Password" name="conf_password" maxlength="20" required/> 
    <input type="file" name="file" accept="image/*"/> 
    <button href="../index.html">create</button> 
</form> 

Dies sind meine HTML-Tags. Ich möchte ein Standardbild für dieses Feld erstellen. Der Name des Bildes ist default-avatar.jpeg
ich diesen Code geschrieben haben:
Benutzer-Standardbild für die MySQL-Datenbank mit PHP

if (isset($_POST["file"])){ 
    $file = addslashes($_POST["file"]); 
    echo "Yes<br>"; 
} 
elseif(empty($_POST['file'])){ 
    $file = "default-avatar.jpeg"; 
    echo "No<br>"; 
} 

So schlug ich vor, wenn der Benutzer eine andere Datei auswählt, die $file Variable einen anderen Wert erhält, wenn der Benutzer keine Datei wählen, die Wert von $file bleibt default-avatar.jpeg

Aber der Wert des Dateifeldes ist nie leer. Als ich versucht habe, echo hat es immer einen gewissen Wert. Wenn der Benutzer eine andere Datei wählt, ist der Wert $file Variable diese Datei, aber wenn er nicht den Wert ist nichts (ich dachte, es ist leer). Also ist die immer True. Wie kann ich das lösen?

+0

[Sie können nicht] (http://stackoverflow.com/questions/1696877/how-to-set-a-value-to-a-file-input-in-html). Randnotiz: was auch immer Sie erreichen möchten, 'addslashes()' ist das falsche Werkzeug. –

Antwort

0

Dateien werden in $_FILES gespeichert, nicht in $_POST. Also müssen die Daten in $ _FILES gesendet werden. Und die Funktion leer() hilft in diesem Fall.

$temp = $_FILES['file']['tmp_name']; 
$error = $_FILES['file']['error']; 

define("UPLOAD_DIR", "../images/users/"); 

if (isset($_FILES['file']) && !empty($_FILES["file"])) { 
    $file = $_FILES["file"]["name"]; 

    $uploadfile = UPLOAD_DIR . $file;//implode() 

    if (!$error>0) { 
     move_uploaded_file($temp, $uploadfile); 
     echo "<p>Success<p>"; 
    } 
    else{ 
     $file = "default-avatar.jpeg"; 
     echo "<p>An error occurred.</p>"; 
     exit; 
    } 
0

Try this:

if (isset($_POST["file"])) 
{ 
    if($_POST["file"] == "") 
    { 
     $file = "default-avatar.jpeg"; 
     echo "No<br>"; 
    } 
    else 
    { 
     $file = addslashes($_POST["file"]); 
     echo "Yes<br>"; 
    } 
} 
+0

Das Problem ist, dass '$ _POST [" file "] ==" "' nicht funktioniert, weil der Wert des Dateifeldes nie leer ist –

+0

@Ani, ich habe gerade den Kommentar gesehen, den Sie auf der anderen Antwort gepostet haben. Da Sie den Eingabetyp als 'Datei' festgelegt haben, möchten Sie vielleicht Folgendes sehen: http://StackOverflow.com/questions/37182801/does-input-type-files-appear-in-post –

+1

Ja, weil Dateien sind gespeichert in '$ _FILES', nicht' $ _POST'. Danke für diesen Link. –

Verwandte Themen