roy - 29/01/2005 20:32 (laatste wijziging 04/02/2005 23:51)
PHP gevorderde
Hallo,
ik heb een upload-formulier.
ik heb het volgende bestand waarvan de naam in een database moet komen: Capricorn-'CapricornVillage'-Ted Maijer(Tacx) 15-10-2001.im
Hij geeft het als volgt weer in de database: -Ted Maijer(Tacx) 15-10-2001.im
<?
if ($_FILES['bestand']) {
//************* te editeren *******************
//tabeldinges
$tabelnaam = "tacx"; //naam van de tabel
$origineelveld = "origineel"; //naam van de velden in je tabel
$uniekveld = "uniek"; //naam van de velden in je tabel
$mimeveld = "mime"; //naam van de velden in je tabel
//volgende var is het pad waar alles wordt opgeslagen.
$eindlocatie = $_SERVER['DOC_ROOT']."/var/www/html/tacx/files/tacx/"; //echo deze variabele als je niet zeker bent!
//*********************************************
if (!is_dir($eindlocatie)) {
die("er is een probleem met de eindlocatie, het is geen dir!<br>".$eindlocatie."<br> controleer eens of dir bestaat!");
} else {
echo "ok, de directory bestaat!<br>";
}
if (!is_writable($eindlocatie)) {
die("uw dir is niet schrijfbaar!");
} else {
echo "en ik kan naar de directory schrijven<br>";
}
echo $uniekenaam = date("YmdHis"), "<br>";
echo $_FILES['bestand']['name'];
if ( move_uploaded_file($_FILES['bestand']['tmp_name'], $eindlocatie.$uniekenaam) ) {
echo $queryzin = "INSERT INTO ".$tabelnaam." (".$uniekveld.", ".$origineelveld.", ".$mimeveld.") VALUES ('".addslashes($uniekenaam)."', '".addslashes($_FILES['bestand']['name'])."','".addslashes($_FILES['bestand']['type'])."')";
mysql_query($queryzin) or die($queryzin."<br>".mysql_error());
echo "<br>goodie, het bestand werd goed getransporteerd en de info kwam in de database!<br>";
} else {
//gn transport
echo "<font color=red>geen transport</font><br>";
}
}
?>
<form action="upload2.php" method="post" enctype="multipart/form-data">
<input type="file" name="bestand"><br>
<input type="submit" name="versturen" value="versturen">
</form>
<?
if($_FILES['bestand']){
//************* te editeren *******************
//tabeldinges
$tabelnaam="tacx";//naam van de tabel
$origineelveld="origineel";//naam van de velden in je tabel
$uniekveld="uniek";//naam van de velden in je tabel
$mimeveld="mime";//naam van de velden in je tabel
//volgende var is het pad waar alles wordt opgeslagen.
$eindlocatie=$_SERVER['DOC_ROOT']."/var/www/html/tacx/files/tacx/";//echo deze variabele als je niet zeker bent!
<?php
if (IsSet($_FILES['files']))
{
$blaat = 9;
$blaat++;
if ($blaat == 10)
{
// zo houd je het netjes
}
else
{
}
// einde else : nog niet gesubmit
?>
je blijft steeds zeggen "het werkt niet". Het is voor ons iets duidelijker als je zegt wat er niet werkt, maar ik neem aan dat je gewoon precies hetzelfde krijgt als in je openingspost.
eerst ff een vraagje: welke php versie heb je??
of heb je andere rare dingen op je server, zoals een onbekende webserver ipv Apache??
roy - 30/01/2005 13:06 (laatste wijziging 30/01/2005 17:16)
Na een nachtje slapen blijkt het nog steeds een waanzinnig mysterie... volgens mij moeten we der FangoRn gaan bijhalen... ik weet er echt geen raad meer mee
roy, wil je nog eens iets doen?? Wil je eens een bestand aanmaken met volgende naam:
Capricorn_Challenge_2_Bert_van_Zantvoort(Tacx)_09_05_2004_1.im en dat dan eens verzenden??
Goed, roy, na wat naslagwerk heb ik je probleem gevonden...
Je host laat namelijk geen automatische toevoeging van slashes bij quotes toe. Normaliter wordt er automatisch een \ voor een ' of " geplaatst bij het verzenden van formulieren, maar je kan dit ook afzetten in je php.ini bestand.
Je host heeft dit hoogstwaarschijnlijk uitgeschakeld. Controleer eens met:
Goed, roy, na wat naslagwerk heb ik je probleem gevonden...
Je host laat namelijk geen automatische toevoeging van slashes bij quotes toe.
Hoe weet je zo zeker dat dat zijn probleem is?? Het lijkt er idd op dat magic_quotes_gpc bij hem uitstaat en ik had ook al zo'n soort berichtje getypt, maar toch maar niet gepost omdat ik dacht dat het probleem daar niet zou zitten en ik was ook te lui om het op mijn server uit te zetten om zo te testen.
Maar goed. Als dat het is kun je dit in een .htaccess bestand zetten:
dan staat het dus aan. Dacht al dat het probleem daar niet kon zitten...
maar waar dan wel... Het heeft toch iets met die quotes te maken. Ik zou zo'n geen instelling weten die dat kan veroorzaken. Misschien helpt een nachtje slapen...