Avatar billede kellesen Nybegynder
16. maj 2007 - 14:53 Der er 11 kommentarer og
1 løsning

problem- blank side

Jeg har den her kode, men den viser blank side. Når jeg skriver noget før <?php viser den ikke det.. min teori er der mangler et { eller noget.. Har kigget længe nu, men kan ikke finde fejlen,.. Kan i?
___________________________________________________________-


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>new one</title>
</head>

<body>
<?php
mysql_connect("", "", "") or die(mysql_error());
mysql_select_db("");
/* Funktion der uploader en fil af tilladt filtype (MIME) med en maximal størrelse til et bibliotek */
/* Funktionen skal fodres med $_FILES['navn'] */
/* String upload_fil(Array fil [, Integer max_stoerrelse [, String bibliotek [, Array filtyper_tilladt]]])  */


function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
    if ($bibliotek == 'default') {
        $bibliotek = '/images';
    }

    if ($filtyper_tilladt == 'default') {
        $filtyper_tilladt = array('image/bmp', 'image/jpeg', 'image/pjpeg', 'image/tiff', 'image/png', 'image/gif', 'application/pdf', 'application/zip', 'application/arj', 'application/x-zip-compressed', 'application/octet-stream');
    }

    if ($fil['size'] > 0) {
        $filnavn = strtolower(ereg_replace(' ', '_', $fil['name']));
        $fil_sti = $bibliotek . '/' . $filnavn;
        $fra = $fil['tmp_name'];
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil['type'];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }

        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }

        if ($fejl == 0) {
            if (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                $pos = strrpos($filnavn, '.');
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;

                echo "<p>Filen '$filnavn' eksisterer allerede i '$bibliotek' og filen omdøbes derfor til ";

                while (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                    $filnavn = $foerpos . '(' . $i . ').' . $efterpos;
                    $fil_sti = $bibliotek . '/' . $filnavn;
                    $i++;
                }

                echo "'$filnavn'</p>";
            }

            $til = $_SERVER['DOCUMENT_ROOT'] . $fil_sti;

            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo '<p>Der er ikke vedhæftet nogen fil!</p>';
    }
}


if (isset($_POST['send']))
{
$userfile = $_FILES['userfile'];
$bibliotek = $_POST['bibliotek'];
$mithesteid = $_POST['horseid'];
$sti = upload_fil($userfile, 10000, $bibliotek);
if($sti) {
  mysql_query("UPDATE heste SET billede='" . $sti . "' WHERE horseid='" . $mithesteid . "');
}
}
else
{
?>


<form enctype="multipart/form-data" action="<?php $_SERVER['../PHP_SELF']; ?>" method="post">
Vælg fil<br />
<input type="file" name="userfile"><br />
Vælg mappe:<br />
<select name="bibliotek">
    <option value ="/images/heste">heste</option>
    <option value ="/images/stamtrae">stamtræ</option>
</select><br />
<input type="hidden" name="horseid" value="<?php echo $horseid; ?>">
<input type="submit" name="send" value="Upload Fil">
</form>


<?php
}
?>
</body>
</html>
Avatar billede erikjacobsen Ekspert
16. maj 2007 - 15:53 #1
Ser ud til du mangler et " et sted. Men slå fejlvisning til på dit webhotel/server, så finder du det selv.

Så er også
  action="<?php $_SERVER['../PHP_SELF']; ?>"
helt forkert. Du siger ikke echo eller print. Og man kan ikke slå op i $_SERVER med ".."  - kun de navne der nu er defineret, her 'PHP_SELF'. Men det er ikke det der giver din fejl - du får alligevel POST-et til den samme side.
Avatar billede erikjacobsen Ekspert
16. maj 2007 - 15:55 #2
Og så opnår man INGEN sikkerhed ved at tjekke på filtyper som du gør. Enhver hacker kan uploade en .php og få den til at se ud som en gif for dig. Du skal gøre noget andet, fx som her http://www.eksperten.dk/artikler/1098 altså tjekke på extension.
Avatar billede kellesen Nybegynder
16. maj 2007 - 16:01 #3
hvad skal jeg så skrive i steden for action="<?php $_SERVER['../PHP_SELF']; ?>"
Avatar billede erikjacobsen Ekspert
16. maj 2007 - 16:02 #4
Hvorfor vil du have ".." med ?
Avatar billede kellesen Nybegynder
16. maj 2007 - 16:10 #5
det er noget jeg har fået hjælp til herinde.. har ikke testet det endnu da den viser blank side..
Avatar billede erikjacobsen Ekspert
16. maj 2007 - 16:53 #6
Ja, det er ikke synderlig god hjælp ... men det gør næppe nogen forskel. Du kan nok

  action="<?php echo $_SERVER['PHP_SELF']; ?>"

Hvad siger fejlene, når du slået fejlvisning til?
Avatar billede kellesen Nybegynder
21. maj 2007 - 11:48 #7
den siger:

Parse error: syntax error, unexpected T_STRING in /customers/stutterisunhill.dk/stutterisunhill.dk/httpd.www/pages/new.php on line 94

linie 94:
<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"
Avatar billede erikjacobsen Ekspert
21. maj 2007 - 12:31 #8
Ser ud til du mangler et " et sted.  Linien du viser er der hvor fejlen opdages, men den stammer fra noget uafsluttet streng-halløj lidt længere oppe i koden.
Avatar billede kellesen Nybegynder
21. maj 2007 - 12:41 #9
kan du se hvor?

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>new one</title>
</head>

<body>
test
<?php
mysql_connect() or die(mysql_error());
mysql_select_db();


function upload_fil($fil, $max_stoerrelse = 100, $bibliotek = 'default', $filtyper_tilladt = 'default')
{
    if ($bibliotek == 'default') {
        $bibliotek = '/images';
    }

    if ($filtyper_tilladt == 'default') {
        $filtyper_tilladt = array('image/bmp', 'image/jpeg', 'image/pjpeg', 'image/tiff', 'image/png', 'image/gif', 'application/pdf', 'application/zip', 'application/arj', 'application/x-zip-compressed', 'application/octet-stream');
    }

    if ($fil['size'] > 0) {
        $filnavn = strtolower(ereg_replace(' ', '_', $fil['name']));
        $fil_sti = $bibliotek . '/' . $filnavn;
        $fra = $fil['tmp_name'];
        $fil_stoerrelse = filesize($fra)/1024;
        $filtype = $fil['type'];
        $fejl = 0;

        if (!in_array($filtype, $filtyper_tilladt)) {
            echo "<p>Filtypen '$filtype' er ikke tilladt. De tilladte filtyper er '" . implode("', '", $filtyper_tilladt) . "'. Filen '$filnavn' kan derfor ikke uploades!</p>";
            $fejl = 1;
        }

        if ($fil_stoerrelse > $max_stoerrelse) {
            echo "<p>Filen '$filnavn' er for stor og kan ikke uploades. Den fylder " . ceil($fil_stoerrelse) . " kb og der kan maximalt uploades $max_stoerrelse kb!</p>";
            $fejl = 1;
        }

        if ($fejl == 0) {
            if (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                $pos = strrpos($filnavn, '.');
                $foerpos = substr($filnavn, 0, $pos);
                $efterpos = substr($filnavn, $pos + 1, strlen($filnavn) - ($pos + 1));
                $i = 2;

                echo "<p>Filen '$filnavn' eksisterer allerede i '$bibliotek' og filen omdøbes derfor til ";

                while (file_exists($_SERVER['DOCUMENT_ROOT'] . $fil_sti)) {
                    $filnavn = $foerpos . '(' . $i . ').' . $efterpos;
                    $fil_sti = $bibliotek . '/' . $filnavn;
                    $i++;
                }

                echo "'$filnavn'</p>";
            }

            $til = $_SERVER['DOCUMENT_ROOT'] . $fil_sti;

            if (move_uploaded_file($fra, $til)) {
                echo "<p>Filen '$filnavn' er uploadet!</p>";
                return $fil_sti;
            } else {
                echo "<p>Desværre, filen '$filnavn' kunne ikke uploades!</p>";
                return false;
            }
        }
    } else {
        echo '<p>Der er ikke vedhæftet nogen fil!</p>';
    }
}


if (isset($_POST['send']))
{
$userfile = $_FILES['userfile'];
$bibliotek = $_POST['bibliotek'];
$mithesteid = $_POST['horseid'];
$sti = upload_fil($userfile, 10000, $bibliotek);
}
if($sti) {
  mysql_query("UPDATE heste SET billede='" . $sti . "' WHERE horseid='" . $mithesteid . "');
}

else
{
?>



<form enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']; ?>"
method="post">
Vælg fil<br />
<input type="file" name="userfile"><br />
Vælg mappe:<br />
<select name="bibliotek">
    <option value ="/images/heste">heste</option>
    <option value ="/images/stamtrae">stamtræ</option>
</select><br />
<input type="hidden" name="horseid" value="<?php echo $horseid; ?>">
<input type="submit" name="send" value="Upload Fil">
</form>


<?php
}
?>
</body>
Avatar billede kellesen Nybegynder
21. maj 2007 - 15:41 #10
fandt den.. smid et svar - og der er point til dig!
Avatar billede erikjacobsen Ekspert
21. maj 2007 - 17:23 #11
Jeg samler slet ikke på point, tak.
Avatar billede kellesen Nybegynder
22. maj 2007 - 11:02 #12
ok
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