tantenMedlem sedan nov. 20051 596 inlägg Nu har jag kladdat och kluddat hur länge som helst med detta och är för grön för att förstå hur jag ska göra så det fungerar inte.
Jag har ett formulär som lägger in en ny häst i databasen. Så långt fungerar det helt OK.
Men nu försöker jag peta in att det samtidigt ska skapas en bildmapp för denna nya häst och jag får det inte att fungera. Har kortat ner koden, så det kanske fattas en eller annat tecken...
if (!isSet($_POST["insForm"]))
header("Location: hest.html");
echo "namn = ".$_POST["namn"].", smeknamn = ".$_POST["smeknamn"].", insForm = ".$_POST["insForm"]."</p>";
$sql = "INSERT INTO hest (namn, smeknamn)
VALUES('".$_POST["namn"]."', '".$_POST["smeknamn"]."')";
mysql_query($sql) or die("Något blev fel");
echo "Du har lagt till ".mysql_affected_rows()."ny häst";
och
<form action="inserthest.php" method="post">
namn<input type="text" name="namn" size="35" />
smeknamn<input type="text" name="smeknamn" size="35" />
<input type="hidden" name="insForm" value="1" />
<input type="submit" value="Registrera" />
</form>
Vad jag försökt få med är
mkdir('. $_POST['smeknamn']);
Hur gör jag? Enklast möjliga förslag... Bara en person som kommer använda formuläret... Skulle bli sååå glad...
fiddlerMedlem sedan juli 20023 617 inlägg Din mkdir-kod är nog inte helt kurrant. Testa med:
$dir=$_POST['smeknamn'];
mkdir($dir);
tantenMedlem sedan nov. 20051 596 inlägg Testade men ingen ny mapp skapades, men ny häst...inga fel rapporterades.
Vart skulle du lagt in koden? Gissar att den måste läggas in när uppgifterna om hästen kommit in i databasen...
fiddlerMedlem sedan juli 20023 617 inlägg
tanten skrev:
Gissar att den måste läggas in när uppgifterna om hästen kommit in i databasen...
Japp.
mkdir returnerar false resp true. Du kan ju lägga till "or die("Mappen kunde inte skapas");" efter din mkdir-sats, men det bekräftar ju bara det vi vet...
Måste man ha ett "/" före mappnamnet? Kommer inte ihåg...
/red. "/" behövs inte...
tantenMedlem sedan nov. 20051 596 inlägg Lade in den direkt efter alla de andra POST-arna och då fungerade det. :)
...........'".$_POST["smeknamn"]."')";
$dir=$_POST['smeknamn'];
mkdir($dir);
mysql_query($sql) or die("Något blev fel");
echo "Du har lagt till ".mysql_affected_rows()."ny häst";
Tack så jättemycket :birp
Ska man ha med rättigheter?
Jag har liknande "problem" med att skapa en mapp till användaren som laddar upp bilden.
Har följande:
$maxfilesize = 256 * 1024;
if ($HTTP_SERVER_VARS["REQUEST_METHOD"] == "POST")
{
if (!function_exists('mime_content_type')) {
function mime_content_type($f) {
$f = escapeshellarg($f);
return trim( `file -bi $f` );
}
}
$file = $_FILES["file"];
if (!isset($file) || $file["size"] < 1)
stderr("Upload failed", "Nothing received!");
if ($file["size"] > $maxfilesize)
stderr("Upload failed", "Sorry, that file is too large for the gallery.");
$filename = $file["name"];
if (strpos($filename, "..") !== false || strpos($filename, "/") !== false)
stderr("Upload failed", "Bad file name.");
$it = mime_content_type($file["tmp_name"]);
if ($it != "image/gif" && $it != "image/jpeg" && $it != "image/jpg" && $it != "image/png")
stderr("Upload failed", "Sorry, the file you uploaded was not recognized as a valid image file.");
$i = strrpos($filename, ".");
if ($i !== false)
{
$ext = strtolower(substr($filename, $i));
if (($it == "image/gif" && $ext != ".gif") || ($it == "image/jpeg" && $ext != ".jpg") || ($it == "image/jpg" && $ext != ".jpg") || ($it == "image/png" && $ext != ".png"))
stderr("Error", "Invalid file name extension: <b>$ext</b>");
}
else {
stderr("Error", "File name needs an extension.");
}
$filehash = md5($filename) . $ext;
$tgtfile = "./userpics/$userid/" . $filehash;
if (file_exists($tgtfile))
stderr("Upload failed", "Sorry, a file with the name <b>" . htmlspecialchars($filename) . "</b> already exists in the gallery.");
move_uploaded_file($file["tmp_name"], $tgtfile);
$update = get_date_time();
$update = sqlesc($update);
$userid = $CURUSER["id"];
//$username = $CURUSER["username"];
$filehash1 = sqlesc($filehash);
$filename1 = sqlesc($filename);
mysql_query("INSERT INTO profilbilder (added, userid, filename, location) VALUES($update, $userid, $filename1, $filehash1)") or sqlerr(__FILE__, __LINE__);
$url = str_replace(" ", "%20", htmlspecialchars("$BASEURL/userpics/$userid/$filehash"));
stderr("Success", "<a href=picture_gallery.php>View gallery</a></b><p><a href=picupload.php>Upload another Picture</a>.");
}
stdhead("Gallery upload");
?>
<h1>Picture gallery upload</h1>
<form method="post" action="picupload.php" enctype="multipart/form-data">
<p><b>Maximum file size: <?=number_format($maxfilesize); ?> bytes.</b></p>
<table border=1 cellspacing=0 cellpadding=5>
<tr><td class=rowhead>Upload file</td><td><input type="file" name="file" size=60></td></tr>
<tr><td colspan=2 align=center><input type=submit value="Upload" class=btn></td></tr>
</table>
</form>
En mapp med användarnamnet skall alltså skapas (och chmoddas till 777) under /userpics/
Vet inte rikigt var jag ska lägga "mkdir" i koden ovan. :r
Tacksam för all hjälp.
tantenMedlem sedan nov. 20051 596 inlägg Vad jag gjorde var att skapa mappen direkt efter att hästen hade blivit klar med sina insert
$sql ="INSERT INTO hest(frysid, osv... rubrik) values ('$frysid', osv... '$rubrik')"
mysql_query($sql) or die(mysql_error());
$path = "../stallet/";
mkdir($path . $smeknamn, 0777);
};
och efter det formulär för att skicka upp bild.
Koden ser lite annorlunda ut nu än vad den gjorde då, men den gamla fungerade.
Har sett någonstans att man kan skapa mapp samtidigt som man skickar upp första bilden, men du kan kanske göra likadant att skapa mappen i samband med att användaren skrivs in i databasen också?
tanten skrev:
men du kan kanske göra likadant att skapa mappen i samband med att användaren skrivs in i databasen också?
Vet faktiskt inte vilket som är "bäst" i detta läge!? :l
Alla användare ska alltså kunna ladda upp egna videoklipp samt bilder.
Har redan en mapp "/usermovies" som har 777. I den mappen ska det sedan skapas nya mappar med användarnas användarnamn när det laddar upp en film.
Verkar fungera med...
mkdir( "usermovies/$CURUSER[username]", 0777 );
..men mappen får 0755 istället för 0777, hur löser jag det?
fiddlerMedlem sedan juli 20023 617 inlägg Testa
chmod( "usermovies/$CURUSER[username]", 0777 );
efter din mkdir-sats.
Fixade så att det skapades mappar direkt när en användare skapade ett konto istället.
Verkar fungera nu efter jag lade till " chmod( "usermovies/$CURUSER[username]", 0777 );". Tack!
Det enda jag inte gillar, är att det skapas enkelfnuttar i början och i slutet av den skapade mappen. 'användarnamn'
Hur löser jag det?
Har detta:
mysql_query("INSERT INTO users (added, last_access, secret, username, passhash, status, email) VALUES(NOW(), NOW(), $secret, $username, $passhash, 'confirmed', $email)") or sqlerr(__FILE__, __LINE__);
mkdir( "usermovies/$username", 0755 );
chmod( "usermovies/$username", 0777 );
mkdir( "userpics/profilbilder/$username", 0755 );
chmod( "userpics/profilbilder/$username", 0777 );
mkdir( "userpics/$username", 0755 );
chmod( "userpics/$username", 0777 );
fiddlerMedlem sedan juli 20023 617 inlägg Du kan ta bort andra parametern i mkdir (0755).
Enkelfnuttarna låter märkligt... Har du dem med dig från början på något sätt?
fiddler skrev:
Enkelfnuttarna låter märkligt... Har du dem med dig från början på något sätt?
Nej, det finns ingen häntydning till några enkelfnuttar någonstans i koden. :l
tantenMedlem sedan nov. 20051 596 inlägg Blir lite nyfiken på vad
'confirmed',
confirmed står för i din INSERT-rad?
tanten skrev:
Blir lite nyfiken på vad
'confirmed',
confirmed står för i din INSERT-rad?
Den gör så att användaren INTE behöver aktivera kontot via email.
Den står redan som "confirmed" istället för "pending".