2 PHP scripts combineren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Nik

Nik

02/05/2008 15:28:00
Quote Anchor link
Beste PHPers,

Om te beginnen wil ik even vermelden dat mijn PHP kennis heel laag is. Ik wil graag een scriptje waarmee ik wat text in een database kan zetten en een bestandje kan uploaden (niet naar de database maar naar een directory). Zodoende kan ik met één pagina de link naar de download + comments over die download uit de database halen en zo kan ik gemakkelijk nieuwe download toevoegen.

Ik heb 2 scripts van jullie site gebruikt die beide los van elkaar perfect werken (een voor text input naar de database, een voor het uploaden van een bestand). Ik zou hier graag één script van willen maken, maar na een uurtje of 3 ben ik ermee gestopt en kom ik hier om hulp vragen.

Bron code:
Upload script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
if(!empty($_POST)){
$locatie="mp3/"; //of een andere map, vergeet niet de w-rechten
   if(is_uploaded_file($_FILES['muziek']['tmp_name']))
   {

        //controleer grootte
        if($_FILES['muziek']['size']>1024000)
                   {
//bepaal zelf de max. grootte in bytes
                   echo "Het bestand is te groot";
                   exit;
                   }


        //controleer extensie, voeg maar andere toe
        if(!eregi("((.mp3|.zip)$)", $_FILES['muziek']['name']))
                   {

                   echo "het bestand is niet van het juiste type";
                   exit;
                   }



        if(!move_uploaded_file($_FILES['muziek']['tmp_name'],
                               $locatie.$_FILES['muziek']['name']))

                  {

                  echo" het bestand kan niet worden verplaatst";
                  exit;
                  }


        $link="http://www.aqid.nl/test/mp3/".$_FILES['muziek']['name'];

        echo "Uw bestand ".$_FILES['muziek']['name']." is geupload. <BR>Link: <a href=".$link.">".$link."</a>";
   }

    
   else
   {
   echo "Het uploaden is mislukt.";
   }
    

}

else{
?>

     <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
     <!--Bepaal zelf de maximale grootte in bytes -->
     <input type="file" name="muziek"><br>
     <input type="submit" name="submit" value="uploaden">
     </form>
<?php
     }
?>

Text invoer script
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
<?php

    //-- maak eerst de connectie met de database!
    $user = "xxx";
    $pass = "xxx";
    $host = "xxx";
    $dbdb = "xxx";
    
        
    if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
    {

        echo "Kan geen verbinding maken met de database.";
        exit();
    }

    
    unset($user);
    unset($pass);
    unset($host);
    unset($dbdb);


if ($_POST['submit'] && $_POST['text'] && $_POST['titel'] && $_POST['name'])
{
  
$datum = date("d.m.Y H:i");


$sql = "INSERT INTO mp3 SET id = '', titel = '" . $_POST['titel'] . "', name = '" . $_POST['name'] . "', bericht = '" . $_POST['text'] . "', datum = '" . $datum . "'";
$res = mysql_query($sql);

    if ($res)  
    {

    echo "<span class='text'>News added! To view the news click <a href=\"http://www.aqid.nl\" target=\"_top\">here.</a><br>(You will leave the adminpage)</span>";
    }

    else
    {
    echo "<span class='text'>News item is <b>not</b> added! Please try again</a>.</span>";
    }
}
    
elseif ($_POST['submit'] || $_POST['text'] || $_POST['titel'])
{

echo "<span class='text'>Some fields are missing! Please try again.";
}

else
{
    
    echo "<center>";
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\" align=\"center\">";
    echo "<form method=\"POST\" action=\"" . $PHP_SELF . "\">";

        
    echo "<tr><td> </td></tr>";
    
    echo "<tr><td><span class='text'>Title:</span></td>";
    echo "<td><input type=\"text\" name=\"titel\"></td></tr>";
    
    
    echo "<tr><td><span class='text'>Name:</span></td>";
    echo "<td><input type=\"text\" name=\"name\"></td></tr>";

    
    echo "<tr><td> </td></tr>";

    
    echo "<tr><td><span class='text'>Message:</span></td>";
    echo "<td><textarea name=\"text\" rows=\"10\" cols=\"20\"></textarea></td></tr>";

    
    echo "<tr><td><span class='text'>All fields are required!</span> </td></tr>";

    
    echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Plaats!\" class=\"buttons\">&nbsp<input type=\"reset\" value=\"Wis\" class=\"buttons\"></td></tr>";
    
    
    echo "</form>";
    echo "</table>";
    echo "</center>";
}


?>


Het beste wat ik voor elkaar heb gekregen is een script waarbij de text wel naar de database wordt geschreven, maar het upload gedeelte de error "Het uploaden is mislukt." geeft. De broncode daarvan zal ik maar niet posten want dat zal waarschijnlijk op jullie lachspieren werken.

Kan iemand mij in de goede richting helpen? Alvast bedankt.
Gewijzigd op 01/01/1970 01:00:00 door Nik
 
PHP hulp

PHP hulp

02/05/2024 01:07:51
 
Jesper Diovo

Jesper Diovo

02/05/2008 15:47:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!empty($_POST)){
?>


Dat is geen goede manier om te controleren of er een formulier is verzonden, en zeker niet om te kijken of alles is ingevuld. Doe het zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
  if(!empty($_POST['titel']) && isset($_FILES)) {
    // de rest
  } else {
    echo "Je vergat iets in te vullen.";
  }
}

?>
 
Pepijn de vos

pepijn de vos

02/05/2008 15:48:00
Quote Anchor link
je moet je upload script iig zo aanpassen dat hij ook andere bestanden accepteert dan mp3 en zip.
daarna moet je met file_get_contents de inhoud van het upgeloade bestand ophalen, die inserten in de database(al die html in script 2 is niet nodig volgens mij), en dan eventueel unlink gebruiken om het bestand weer van je server te halen.

ik heb verder niet heel uitgebreid naar je script gekeken hoor...
 
Crispijn -

Crispijn -

02/05/2008 15:55:00
Quote Anchor link
Leer je aan bestanden nooit zelf in de database te zetten. Zet de files zelf gewoon op de fileserver en sla alleen de bestandsnaam op in de database. Dit voorkomt een hoop ellende.

Veel succes!
 
Nik

Nik

02/05/2008 17:28:00
Quote Anchor link
Allereerst bedankt voor jullie replies

@Djemo: Thanks, zoals ik al zei komen beide stukken code van deze site dus daar had ik geen idee van.

@Pepijn: Mp3 en zip zijn de enige types die ik wil uploaden dus dat is geen probleem. (Script was eerst JPG en GIF oid en dat heb k zelf veranderd naar mp3 en zip)

@Crispijn: Ik ben een beetje onduidelijk geweest, sorry. Ik wil graag het bestand gewoon uploaden naar een directory, de link + de comments over het bestand wil ik graag in een database stoppen. En dat alles met 1 formulier.

Ik heb een aantal dingen geprobeerd om er één formulier van te maken maar ik kom er niet uit :(

Als iemand nog tips heeft hoop ik ze graag te horen.
 
Jan Koehoorn

Jan Koehoorn

02/05/2008 17:35:00
Quote Anchor link
Je hebt minimaal dit nodig:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

<body>
    <?php
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            if (!$_FILES['userfile']['error']) {
                echo '<pre>' . print_r ($_FILES, true) . '</pre>';
            }

            echo '<pre>' . print_r ($_POST, true) . '</pre>';
        }

    ?>

    <form method="post" action="test.php" enctype="multipart/form-data">
        <p>
            <label for="veld1">veld 1:</label>
            <input id="veld1" name="veld1" type="text" value="" />
        </p>
        <p>
            <label for="userfile">upload bestand:</label>
            <input id="userfile" name="userfile" type="file" />
        </p>
        <p>
            <input type="submit" value="verzenden" />
        </p>
    </form>
</body>
</html>
 
Nik

Nik

02/05/2008 19:17:00
Quote Anchor link
Hartelijk bedankt voor je hulp, maar deze verstuurd de input naar een nieuwe pagina en dan wordt alles weer anders (ik ben maar een leek dus dat is een beetje lastig).

Ik wou een voorbeeld code posten van hoe ik het geprobeerd had, maar vreemd genoeg werkt het nu wel!

De code zal niet optimaal zijn, maar hij doet in ieder geval zijn werk nu.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php

    //-- maak eerst de connectie met de database!
    $user = "xxx";
    $pass = "xxx";
    $host = "xxx";
    $dbdb = "xxx";
    
        
    if (!mysql_select_db($dbdb, mysql_connect($host, $user, $pass)))
    {

        echo "Kan geen verbinding maken met de database.";
        exit();
    }

    
    unset($user);
    unset($pass);
    unset($host);
    unset($dbdb);


if ($_POST['submit'] && $_POST['text'] && $_POST['titel'] && $_POST['name'])
{


$locatie="mp3/";
   if(is_uploaded_file($_FILES['muziek']['tmp_name']))
   {

        //controleer grootte
        if($_FILES['muziek']['size']>1024000)
                   {
//bepaal zelf de max. grootte in bytes
                   echo "Te file is too big.";
                   exit;
                   }


        //controleer extensie, voeg maar andere toe
        if(!eregi("((.mp3|.zip)$)", $_FILES['muziek']['name']))
                   {

                   echo "File type doesnt match .MP3 or .ZIP.";
                   exit;
                   }



        if(!move_uploaded_file($_FILES['muziek']['tmp_name'],
                               $locatie.$_FILES['muziek']['name']))

                  {

                  echo "File cannot be copied.";
                  exit;
                  }


        $link="http://www.aqid.nl/test/mp3/".$_FILES['muziek']['name'];

        echo "Your file: ".$_FILES['muziek']['name']." has been uploaded. <br>Link: <a href=".$link.">".$link."</a>";
   }

    
   else
   {
   echo "Upload failed.";
   }


echo "<br><br>";
 
$datum = date("d.m.Y H:i");


$sql = "INSERT INTO mp3 SET id = '', titel = '" . $_POST['titel'] . "', name = '" . $_POST['name'] . "', bericht = '" . $_POST['text'] . "', datum = '" . $datum . "'";
$res = mysql_query($sql);

    if ($res)  
    {

    echo "<span class='text'>Download added to database! To view the frontpage click <a href=\"http://www.aqid.nl\" target=\"_top\">here.</a>(You will leave the adminpage)</span>";
    }

    else
    {
    echo "<span class='text'>Download is <b>not</b> added! Please try again</a>.</span>";
    }

echo "<br>";
}
    
elseif ($_POST['submit'] || $_POST['text'] || $_POST['titel'])
{

echo "<span class='text'>Some fields are missing! Please try again.";
}

else
{
    
    echo "<center>";
    echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"5\" align=\"center\">";
    echo "<form method=\"POST\" action=\"" . $PHP_SELF . "\" enctype=\"multipart/form-data\">";

        
    echo "<tr><td> </td></tr>";
    
    echo "<tr><td><span class='text'>Title:</span></td>";
    echo "<td><input type=\"text\" name=\"titel\"></td></tr>";
    
    
    echo "<tr><td><span class='text'>Name:</span></td>";
    echo "<td><input type=\"text\" name=\"name\"></td></tr>";

    
    echo "<tr><td> </td></tr>";

    
    echo "<tr><td><span class='text'>Message:</span></td>";
    echo "<td><textarea name=\"text\" rows=\"10\" cols=\"20\"></textarea></td></tr>";

    echo "<tr><td><span class='text'>File:</span></td>";
    echo "<td><input id=\"muziek\" name=\"muziek\" type=\"file\" /></td></tr>";
    
    echo "<tr><td><span class='text'>All fields are required!</span> </td></tr>";

    
    echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Plaats!\" class=\"buttons\">&nbsp<input type=\"reset\" value=\"Wis\" class=\"buttons\"></td></tr>";
    
    
    echo "</form>";
    echo "</table>";
    echo "</center>";
}


?>


Nu het eenmaal werkt kan ik het gaan uitbreiden hoe ik graag wil... (zit bijv nog geen check op t invoervak van upload vak). Bedankt voor jullie input.
 
Wim E

Wim E

02/05/2008 22:28:00
Quote Anchor link
@Nik

Je site is gehacked..niet door mij...
 
Nik

Nik

02/05/2008 23:09:00
Quote Anchor link
FFS...

Van de ene kant heb ik zoiets van, ik heb er extra geen wachtwoord opgezet omdat ik jullie om hulp vroeg. Ik had wel een simpel wachtwoord script klaar staan wat ik wou toepassen nadat het script af was (niet dat dat een echte hack poging tegen houd maar het is iets). Wat geeft je het recht om aan mijn spullen te zitten terwijl je ook nog eens leest dat mijn niveau "beginner" is?

Aan de andere kan heb ik er wel respect voor, hij heeft namelijk alleen het "foute" script verwijderd en de index aangepast om een berichtje achter te laten en mij er op te attenderen. Sommige mensen hadden alles gewist, puur en alleen omdat ze het konden.

Nja gooi het topic maar dicht want het probleem is opgelost.
Gewijzigd op 01/01/1970 01:00:00 door Nik
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.