Avatar billede tobrukDk Novice
18. januar 2012 - 21:40 Der er 11 kommentarer og
1 løsning

login system - tilføj upload billede

Hej

Jeg har kigget på en af artikler inde på udvirkleren http://www.udvikleren.dk/artikler/340/fra-begynder-til-login/ og det sådan at jeg har kun godt tænke mig at for upload billede tilføj inde i koden så vil jeg høre om jeg har gøre det rigtigt?


<?php

$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$errorCount = 0;

if($brugernavn == "")
{
    echo "Du skal indtaste et brugernavn.<br>";
    $errorCount++;
}
if($password == "")
{
    echo "Du skal indtaste et password.<br>";
    $errorCount++;
}
if($gentag == "" || $gentag != $password)
{
    echo "De to passwordfelter skal have ens indhold.<br>";
    $errorCount++;
}

   
    if ($_FILES['file']['error'] == 0)//Hvis vi har har upload billedet
    {
                if ($fejl == ""){ // != Passer ikke
                $nyt_billednavn = time() . "_" . $_FILES['file']['name'];
               
                $temp = $_FILES['file']['tmp_name'];
               
                move_uploaded_file($temp,"img/$nyt_billednavn");
                               
                }       
               
        }
            else {
                $fejl .= "fejl i billedet upload <br />";
               
                // .= tilføj varibal
            }
           
           
            include("include/database/database.php");
           
            if($errorCount == 0)
            {
              $password = MD5($password);
              $insert = mysql_query("INSERT INTO brugere (brugernavn,password,img) VALUES ('$brugernavn','$password','$nyt_billednavn')");
             
              if(!$insert)
                        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
              else
                        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
            }
?>


Jeg kun godt tænke mig at vide om jeg har sæt det rigtigt op og tilføj "Billede upload det rigtigt sted";


Håber jeg høre fra dig :)
Avatar billede inteeeL Nybegynder
18. januar 2012 - 22:35 #1
Hej.

<?php

$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$errorCount = 0;

if($brugernavn == "")
{
    echo "Du skal indtaste et brugernavn.<br>";
    $errorCount++;
}
if($password == "")
{
    echo "Du skal indtaste et password.<br>";
    $errorCount++;
}
if($gentag == "" || $gentag != $password)
{
    echo "De to passwordfelter skal have ens indhold.<br>";
    $errorCount++;
}

if($errorCount == 0)

    if ($_FILES['file']['error'] == 0)//Hvis vi har har upload billedet
    {
        if ($fejl == ""){ // != Passer ikke
            $nyt_billednavn = time() . "_" . $_FILES['file']['name'];
       
            $temp = $_FILES['file']['tmp_name'];

            move_uploaded_file($temp,"img/$nyt_billednavn"); // Her sker upload-delen
                             
        }
    }
    else {
        $fejl .= "fejl i billedet upload <br />";
             
        // .= tilføj varibal
    }

    include("include/database/database.php");
         
    $password = MD5($password);
    $insert = mysql_query("INSERT INTO brugere (brugernavn,password,img) VALUES ('$brugernavn','$password','$nyt_billednavn')");
           
    if(!$insert)
    {
        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    else
        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
    }
}
?>


Først og fremmest vil du kunne se, at jeg har rykket error-valideringen lidt højere op - ingen grund til at uploade et billede, hvis der er fejl. Dernæst vil jeg anbefale dig at sætte $_FILES['file'] som en variabel, ligesom du gør med dine andre $_POST-variabler. Og afslutningsvis bør du validere endnu mere ved upload af billede (udskrive fejl, hvis der er fejl - og hvor fortælle hvad det er. Mht. "Billedet er uploadet det rigtige sted"-beskeden skal dette ske ved en validering af move_uploaded_file - se nedenstående:

if( move_uploaded_file($temp,"img/$nyt_billednavn")) {


Afslutningsvis vil jeg sige, at jeg synes, du burde tænker ekstra meget over, hvordan du opstiller din kode. Ovenstående kode er meget rodet (har prøvet at tilrette lidt), men sørg for at lave indrykning, når du bruger tuborgklamme - og selvfølgelig rykke tilbage, når du lukker den. Dette vil gøre hele din kode meget mere overskuelig - for din egen skyld. :-)
Avatar billede tobrukDk Novice
18. januar 2012 - 23:02 #2
I know omkring det der med tuborgklamme - og selvfølgelig rykke tilbage, Olebole har sagt det til mig men det er bare når jeg skal vande mig til eller hvad man siger.

og takker fordi du vil bruge tid på at forklare mig det men kigger på det i morgen når jeg er kommet i skole da jeg lige pt nu er i gang med at style siden :)
Avatar billede tobrukDk Novice
19. januar 2012 - 19:30 #3
Der er noget galt ved


if(!$insert)
    {
        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    else
        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
    }


kode er sådan her ud ;


<?php include("include/database/database.php");?>
<?php

$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$errorCount = 0;

if($brugernavn == "")
{
    echo "Du skal indtaste et brugernavn.<br>";
    $errorCount++;
}
if($password == "")
{
    echo "Du skal indtaste et password.<br>";
    $errorCount++;
}
if($gentag == "" || $gentag != $password)
{
    echo "De to passwordfelter skal have ens indhold.<br>";
    $errorCount++;
}

if($errorCount == 0)

    if ($_FILES['file']['error'] == 0)//Hvis vi har har upload billedet
    {
        if ($fejl == ""){ // != Passer ikke
            $nyt_billednavn = time() . "_" . $_FILES['file']['name'];
       
            $temp = $_FILES['file']['tmp_name'];

            move_uploaded_file($temp,"img/$nyt_billednavn"); // Her sker upload-delen
                             
        }
    }
    else {
        $fejl .= "fejl i billedet upload <br />";
             
        // .= tilføj varibal
    }

    include("include/database/database.php");
         
    $password = MD5($password);
    $insert = mysql_query("INSERT INTO brugere (brugernavn,password,img) VALUES ('$brugernavn','$password','$nyt_billednavn')");
           
    if(!$insert)
    {
        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    else
        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
    }
}
?>
Avatar billede tobrukDk Novice
19. januar 2012 - 21:19 #4

<?php
include("include/database/database.php");

//Infomation
$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$facebook = $_POST["facebook"];
$soundcloud = $_POST["soundcloud"];
$land = $_POST["land"];
$profiltekst = $_POST["profiltekst"];
$djnavn = $_POST["djnavn"];
$email = $_POST["email"];
$site = $_POST["site"];
$still = $_POST["still"];
$img = $_POST["img"];

    $errorC = 0;

        if($brugernavn == ""){
            echo "Husk at sat brugernavn p&aring.<br />";
            $errorC++;
        }
            if($password == ""){
                echo "Husk at sat password.<br />";
                $errorC++;
            }
                if($gentag == "" || $gentag != $password){
                    echo "Gentag Password og Password passer ikke sammen<br />";
                    $errorC++;
                }
include("include/database/database.php");

        if($errorC == 0)
        {
            if($_FILES['file']['error'] == 0)
            {
                if($fejl == "") {
                    $nyt_billedenavn = time() . "_". $_FILES['file']['error'];
                   
                    $temp = $_FILES['file']['tmp_name'];
                   
                    move_uploaded_file($temp,"bruger_img/$img");
                }
            }
           
$password = sha1($password);
$insert = mysql_query("INSERT INTO brugere (brugernavn,password,facebook,soundcloud,land,profiltekst,djnavn,email,site,still,img) VALUES ('$brugernavn','$password','$facebook','$soundcloud','$land','$profiltekst','$djnavn','$email','$site','$still','$img')");
 
      if(!$insert)
        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
      else
        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
}
?>



der kommer den frem og siger ;

Notice: Undefined index: img in C:\xampp\htdocs\djinfo\opretbruger_info.php on line 18

Notice: Undefined index: file in C:\xampp\htdocs\djinfo\opretbruger_info.php on line 39

Notice: Undefined index: file in C:\xampp\htdocs\djinfo\opretbruger_info.php on line 42

Notice: Undefined index: file in C:\xampp\htdocs\djinfo\opretbruger_info.php on line 44
Avatar billede tobrukDk Novice
19. januar 2012 - 22:31 #5

<?php
include("include/database/database.php");

//Infomation
$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$facebook = $_POST["facebook"];
$soundcloud = $_POST["soundcloud"];
$land = $_POST["land"];
$profiltekst = $_POST["profiltekst"];
$djnavn = $_POST["djnavn"];
$email = $_POST["email"];
$site = $_POST["site"];
$still = $_POST["still"];


    $errorC = 0;

        if($brugernavn == ""){
            echo "Husk at sat brugernavn p&aring.<br />";
            $errorC++;
        }
            if($password == ""){
                echo "Husk at sat password.<br />";
                $errorC++;
            }
                if($gentag == "" || $gentag != $password){
                    echo "Gentag Password og Password passer ikke sammen<br />";
                    $errorC++;
                }
include("include/database/database.php");

        if($errorC == 0)
          {
              if(isset($_FILES['img'])){
 
                echo $_FILES['img']['tmp_name'];
             
              }
             
$password = sha1($password);
$insert = mysql_query("INSERT INTO brugere (brugernavn,password,facebook,soundcloud,land,profiltekst,djnavn,email,site,still,img) VALUES ('$brugernavn','$password','$facebook','$soundcloud','$land','$profiltekst','$djnavn','$email','$site','$still','$img')");
   
        if(!$insert)
          echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
        else
          echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
  }
?>



<form action="opretbruger_info.php" method="post" enctype="multipart/form-data">
                    <p> - Personlig infomation omkring bruger</p><br>
                    <input type="text" name="brugernavn" placeholder="Brugernavn" />
                    <br>
                    <input type="password" name="password" placeholder="Password" />
                    <br>
                    <input type="password" name="gentag" placeholder="Gentag password" />
                    <br>
                    <input type="text" name="email" placeholder="Email til Booking" />
                    <br><br>
                    <p> - Infomation til din profil</p><br>
                    <input type="text" name="site" placeholder="Website Navn" />
                    <br>
                    <input type="text" name="facebook" placeholder="Facebook" />
                    <br>
                    <input type="text" name="soundcloud" placeholder="Soundcloud" />
                    <br>
                    <input type="text" name="still" placeholder="Musik Still" />
                    <br>
                    <input type="text" name="djnavn" placeholder="Dj Navn" />
                    <br>
                    <input type="text" name="land" placeholder="Hvor kommer du fra" />
                    <br><br>
                    <textarea name="profiltekst" id="profiltekst"></textarea>
                    <br><br>
                    <p> - Upload Profil Billede</p><br>
                    <input type="file" name="img" placeholder="File Navn">
                    <br>
                    <input type="submit" value="Opret" id="opretbrugernu">
                    </form>
Avatar billede inteeeL Nybegynder
20. januar 2012 - 08:27 #6
- Fejlen på linje 18 skyldes, at $_POST["img"] skal være $_FILES["img"].
- Resten af fejlene skyldes, at du skriver $_FILES["file"] i stedet for $_FILES["img"]. Brug i stedet $img, da du har brugt denne variabel til at definere $_FILES["img"]. Se nedenstående:

<?php
include("include/database/database.php");

//Infomation
$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$facebook = $_POST["facebook"];
$soundcloud = $_POST["soundcloud"];
$land = $_POST["land"];
$profiltekst = $_POST["profiltekst"];
$djnavn = $_POST["djnavn"];
$email = $_POST["email"];
$site = $_POST["site"];
$still = $_POST["still"];
$img = $_FILES["img"];

$errorC = 0;

if($brugernavn == ""){
    echo "Husk at sat brugernavn på.<br />";
    $errorC++;
}
if($password == ""){
    echo "Husk at sat password.<br />";
    $errorC++;
}
if($gentag == "" || $gentag != $password){
    echo "Gentag Password og Password passer ikke sammen<br />";
    $errorC++;
}
include("include/database/database.php");

if($errorC == 0) {
    if($img['error'] == 0) {
        if($fejl == "") {
            $nyt_billedenavn = time() . "_". $_FILES['file']['error'];
            $temp = $img['tmp_name'];
                 
            move_uploaded_file($temp,"bruger_img/$img");
        }
    }
         
    $password = sha1($password);
    $insert = mysql_query("INSERT INTO brugere (brugernavn,password,facebook,soundcloud,land,profiltekst,djnavn,email,site,still,img) VALUES ('$brugernavn','$password','$facebook','$soundcloud','$land','$profiltekst','$djnavn','$email','$site','$still','$img')");
   
    if(!$insert) {
        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    }
    else {
        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
    }
}
?>


Læg lige mærke til indrykningerne, som vi snakkede om tidligere. :-)
Avatar billede tobrukDk Novice
20. januar 2012 - 15:55 #7
Notice: Undefined index: file in C:\xampp\htdocs\djinfo\opretbruger_info.php on line 38

if($errorC == 0) {
    if($img['error'] == 0) {
        if($fejl == "") {
            $img = time() . "_". $_FILES['file']['error'];
            $temp = $img['tmp_name'];
                 
            move_uploaded_file($temp,"bruger_img/$img");
        }
    }
Avatar billede inteeeL Nybegynder
20. januar 2012 - 21:07 #8
Hør nu efter for søren. :-)

Undefined index -> et indeks, du ikke har defineret. $_FILES['file'] er ikke defineret, den hedder som tidligere nævnt $_FILES['img'], men da du allerede defineret $_FILES['img'] som $img, kan du blot bruge denne variabel, hver gang du skal bruge den (ligesom du gør i resten af koden).

Derfor ser koden sådan her ud (du mangler lige en tuborgklamme til sidst, ved ikke om du blot glemte at tage den med):
if($errorC == 0) {
    if($img['error'] == 0) {
        if($fejl == "") {
            $img = time() . "_". $img['error'];
            $temp = $img['tmp_name'];
               
            move_uploaded_file($temp,"bruger_img/$img");
        }
    }
}


Husk at det er vigtigere at forstå, hvorfor fejl opstår, så du i fremtiden kan undgå disse - fremfor blot at få rettet den ene linje, så du kan komme videre med hjemmesiden. :-)
Avatar billede tobrukDk Novice
20. januar 2012 - 22:23 #9
Ja i know.. :)

Notice: Undefined index: img in C:\xampp\htdocs\djinfo\opretbruger_info.php on line 17



$img = $_FILES["img"];


Der hvor jeg har lavet variablen.

jeg vise gerne kode så du kan se hvad jeg har ret og forkert. :)


<?php
include("include/database/database.php");

//Infomation
$fejl = "";
$brugernavn = $_POST["brugernavn"];
$password = $_POST["password"];
$gentag = $_POST["gentag"];
$facebook = $_POST["facebook"];
$soundcloud = $_POST["soundcloud"];
$land = $_POST["land"];
$profiltekst = $_POST["profiltekst"];
$djnavn = $_POST["djnavn"];
$email = $_POST["email"];
$site = $_POST["site"];
$still = $_POST["still"];
$img = $_FILES["img"];

$errorC = 0;

if($brugernavn == ""){
    echo "Husk at sat brugernavn på.<br />";
    $errorC++;
}
if($password == ""){
    echo "Husk at sat password.<br />";
    $errorC++;
}
if($gentag == "" || $gentag != $password){
    echo "Gentag Password og Password passer ikke sammen<br />";
    $errorC++;
}
include("include/database/database.php");

if($errorC == 0) {
    if($img['error'] == 0) {
        if($fejl == "") {
            $nyt_billedenavn = time() . "_". $_FILES['file']['error'];
            $temp = $img['tmp_name'];
                 
            move_uploaded_file($temp,"bruger_img/$img");
        }
    }
}
         
    $password = sha1($password);
    $insert = mysql_query("INSERT INTO brugere (brugernavn,password,facebook,soundcloud,land,profiltekst,djnavn,email,site,still,img) VALUES ('$brugernavn','$password','$facebook','$soundcloud','$land','$profiltekst','$djnavn','$email','$site','$still','$img')");
   
    if(!$insert) {
        echo "Der skete en fejl. Prøv igen. <a href=\"java script:history.back(-1)\">Tilbage</a><br>";
    }
    else {
        echo "Brugeren blev oprettet. <a href=\"index.php\">Forside</a><br>";
    }

?>
Avatar billede tobrukDk Novice
20. januar 2012 - 22:30 #10
Jeg dropper det her storre projekter.. da jeg ikke er så "Pro"
Avatar billede inteeeL Nybegynder
20. januar 2012 - 23:21 #11
Stort og stort, det er hvad man gør det til. Almindelig taknemmelighed ville dog være på sin plads, fremfor blot at afslutte tråden med selv at acceptere svaret (ikke at pointene betyder noget for mig).
Avatar billede tobrukDk Novice
20. januar 2012 - 23:30 #12
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester