Fout in script
Ik ben sinds een paar dagen bezig met een script, die muziek in een map zet en dat via de database valt terug te halen. Het script laat dan alle nummers in een lijst zien.
Ik had al een script klaar maar hij geeft geen fouten weer. Wel ben ik zelf even naar het script gaan kijken en had ik gezien dat er in de rest geen fout zat en alles klopte. Behalve in een bepaald deel waar ik niet veel van snapte en de fout wel in moest zitten.
Omdat je volgens de regels maar een deel van de script moet plaatsen is hier het deel waar de fout (mogelijk) zit.
Code (php)
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
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
elseif($_GET['action'] == "add") {
if(!isfeedbackadmin($userID)) die('No access!');
echo('
<form action="?site=music&action=save" method="post" enctype="multipart/form-data">
<table width="100%">
<tr><td>Title:</td><td><input type="text" name="name"></td></tr>
<tr><td>Artist:</td><td><textarea name="artist" cols="60" rows="7"></textarea></td></tr>
<tr><td>Song:</td><td><input type="file" name="file"></td></tr>
<tr><td><input type="submit"></td></tr></table></form>');
}
elseif($_GET['action']=="save") {
$name=$_POST['name'];
$desc=nl2br($_POST['artist']);
$file=$_FILES['file'];
$path="./music/";
move_uploaded_file($file['tmp_name'], $path.$file['name']);
chmod($path.$file['name'], 0755);
mysql_query("INSERT INTO ".PREFIX."music (mustitle, musartist, musfile) VALUES ('".$name."', '".$desc."', '".$file['name']."')");
echo('The Song was successfully registered!');
}
elseif($_GET['action'] == "delete") {
if(!isfeedbackadmin($userID)) die('No access!');
$id=$_GET['id'];
mysql_query("DELETE FROM ".PREFIX."music WHERE musID=$id");
echo('Song was successfully deleted!');
}
if(!isfeedbackadmin($userID)) die('No access!');
echo('
<form action="?site=music&action=save" method="post" enctype="multipart/form-data">
<table width="100%">
<tr><td>Title:</td><td><input type="text" name="name"></td></tr>
<tr><td>Artist:</td><td><textarea name="artist" cols="60" rows="7"></textarea></td></tr>
<tr><td>Song:</td><td><input type="file" name="file"></td></tr>
<tr><td><input type="submit"></td></tr></table></form>');
}
elseif($_GET['action']=="save") {
$name=$_POST['name'];
$desc=nl2br($_POST['artist']);
$file=$_FILES['file'];
$path="./music/";
move_uploaded_file($file['tmp_name'], $path.$file['name']);
chmod($path.$file['name'], 0755);
mysql_query("INSERT INTO ".PREFIX."music (mustitle, musartist, musfile) VALUES ('".$name."', '".$desc."', '".$file['name']."')");
echo('The Song was successfully registered!');
}
elseif($_GET['action'] == "delete") {
if(!isfeedbackadmin($userID)) die('No access!');
$id=$_GET['id'];
mysql_query("DELETE FROM ".PREFIX."music WHERE musID=$id");
echo('Song was successfully deleted!');
}
Ik heb via programma's gekeken die een error kunnen weergeven. Maar niks gevonden.
Ik hoop dat dit topic weer niet wordt gesloten en dat ik me aan elke regel houd.
En dan had ik nog een vraag: Wat is bumpen? kon er niks in over de regels vinden. (is dat spamberichten plaatsen voor aandacht?
Gewijzigd op 01/01/1970 01:00:00 door Niek
bumpen is meerdere berichten achter elkaar plaatsen (soms met de bedoeling je bericht steeds weer bovenaan de laatste forum berichten te laten verschijnen, zodat je inderdaad meer aandacht krijgt)
Bumpen is een bericht in je eigen topic zetten zodat het weer in de aandacht komt links in het rijtje. Om iedereen een eerlijke kans te geven is dit verboden binnen 24 uur na het laatste bericht in het topic. (er mag wel gewoon gereageerd worden op de vraag, dat is geen bumpen)
wat was de fout melding?
Zoals er volgens mij in stond (waarschijnlijk niet duidelijk) Zijn er geen foutmeldingen.... noch in de pagina.. noch via het programma
Zonder foutmelding is het namelijk wel heel moeilijk zoeken naar een fout. Verder controleer je bijvoorbeeld ook nergens of je queries wel gelukt zijn en of bijvoorbeeld een functie als move_uploaded_file() wel een positief resultaat terug geeft...
ps. Gebruik verder nooit nl2br() voordat je data in je database wegschrijft, dat doe je pas als je de data weer ophaalt. De functie die je wél moet gebruiken is mysql_real_escape_string() om problemen met quotes in de data en dus het gevaar van sql injectie te voorkomen.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Wat ik wel weet is dat er iets niet klopt in het "name" stuk. Maar ik weet niet wat hoe en waar hoort. Het stuk wat je hier ziet komt half uit een ander script dat dezelfde functie heeft maar dan niet voor muziek.
En ik snap het niet van nl2br() en dat andere.. ik ben echt nog maar een beginner.
En zomaar code kopieren werkt natuurlijk ook niet zomaar, je zult hem altijd aan moeten passen naar je eigen situatie. Maar goed, zonder foutmeldingen of andere indicatie waar en waarom het fout gaat, wordt het toch erg lastig om je te helpen.
En het is niet slim om een functie als nl2br() te gebruiken voordat je iets in een database zet, aangezien je dan html in je database krijgt. En aangezien je html alleen voor opmaak gebruikt, wil je dat liever niet in je database. Die andere functie is om de input in de database te beveiligen tegen sql injectie.
Als je verder niet weet wat dit script eigenlijk doet, zou ik voorstellen dat je je eerst eens wat meer in de materia gaat verdiepen. Misschien is het een idee om dan eerst eens met wat makkelijkers te beginnen.
Een text area heeft dit : name="name" en de andere name="artist" en daar zit iets mee mis. Met de functie van welke area waarvoor diend.
plz help