22. april 2009 - 08:18Der er
40 kommentarer og 1 løsning
Hjælp til fejl i kode
Hjælp.. har fundet en fejl i min simple billedeupload kode.
hvis jeg ikke uploader noget billede så gemmer den en kode af en masse tal i tabellen photo alligevel, hvilket jeg ikke forstår, for hvis der ikke er uploadet noget foto skal den jo heller ikke gemme noget i tabellen photo.
Hvad kan der være galt?
<?php
if(isset($_POST["Submit"])) {
$description = $_POST["description"];
if ($_FILES['photo']) // hvis der er uploadet noget { if( file_exists("../photos/" . $_FILES["photo"]["name"])) { $file_name = substr( md5( time() ), 0, 10 ) . $_FILES["photo"]["name"]; } else { $file_name = $_FILES["photo"]["name"]; } move_uploaded_file( $_FILES["photo"]["tmp_name"], "../photos/" . $file_name ); header ('location:index.php'); } else // hvis der ikke er uploadet noget { echo'fejl, der blev ikke uploadet til galleriet.'; }
mysql_query("INSERT INTO photos (description, photo) VALUES ('".$description."', '".$file_name."')")or die(mysql_error()); echo "Et foto er nu oprettet";
Selvom mange ledere i danske virksomheder udviser stor interessere for kunstig intelligens (AI), tøver de med at tage teknologien i brug.
19. november 2024
Slettet bruger
22. april 2009 - 08:36#1
Umiddelbart vil jeg sige, at det er fordi du eksekverer din query, uanset om der er blevet uploadet noget eller ej. Evt. exit når der ikke er uploadet noget, eller måske flyt din query.
Bør bestemt gemme i description, altså hvis description udfyldes. Det kan du jo evt. lave et nyt tjek på. Du bør stadig væk tage nogle flere elementer fra min upload kode, du har ikke nok kontrol/sikkerhed i din kode.
mysql_query("INSERT INTO photos (description, photo) VALUES ('".$description."', '".$file_name."')")or die(mysql_error()); echo "Din nyhed er nu oprettet";
if ($_FILES['photo']) // hvis der er uploadet noget { if( file_exists("../photos/" . $_FILES["photo"]["name"])) { $file_name = substr( md5( time() ), 0, 10 ) . $_FILES["photo"]["name"]; } else { $file_name = $_FILES["photo"]["name"]; } move_uploaded_file( $_FILES["photo"]["tmp_name"], "../photos/" . $file_name ); header ('location:index.php'); }
Den kode virker måske, men den er ikke god. Hvis billeder findes, så laver du et nyt navn og det er så ikke det navn du har gemt i din database. Ligeldes, hvis upload fejler, så har du også gemt info i din database.
Ja, men prøv så at uploade en fil med samme navn som en tidligere fil. Så burde det fejle.
Synes godt om
Slettet bruger
22. april 2009 - 09:58#18
baahahaha jakobdo sidst jeg var her inde prøvede jeg at hjælpe et fjols som ikke vidste en skid om noget, du ved en af dem der vil have det hele serveret for de har ingen interesse i at lære php... lol og hvis jeg husker rigtigt prøvede du oss at hjælpe, den dag besluttet jeg mig for ikke at hjælpe "php" folket mere :P...
og så idag beslutter jeg mig faktisk for at se om der er nogle seriøse mennesker som faktisk fortjener hjælp.. og hvad er det første jeg støder på :P LOL jeg forstår ikke hvordan du kan bliver ved..
mysql_query("INSERT INTO photos (description, photo) VALUES ('".$description."', '".$file_name."')")or die(mysql_error()); echo "Din nyhed er nu oprettet";
if ($_FILES['photo']) // hvis der er uploadet noget { if( file_exists("../photos/" . $_FILES["photo"]["name"])) { $file_name = substr( md5( time() ), 0, 10 ) . $_FILES["photo"]["name"]; } else { $file_name = $_FILES["photo"]["name"]; } move_uploaded_file( $_FILES["photo"]["tmp_name"], "../photos/" . $file_name ); header ('location:index.php'); } }
Den kender ikke navnet: $file_name Da du kalder linjen: mysql_query("INSERT INTO photos (description, photo) VALUES ('".$description."', '".$file_name."')")or die(mysql_error());
Men hvis din kode virker, så må jeg nok også tilstå, så er der vel ingen grund på at rette dine fejl, som jo tydeligvis ikke er fejl, set med dine eller din lærers øjne. :o)
//Er der trykket på Upload file knappen? if(isset($_POST['Submit'])){ //Har vi en fil? if(is_uploaded_file($_FILES['photo']['tmp_name'])){ //Filendelse $extension = strtolower(pathinfo($_FILES['photo']['name'],PATHINFO_EXTENSION));
//Er filen en af de filer vi gerne vil have? if(in_array($extension,$allowedFileTypes)){ if( file_exists("../photos/" . $_FILES['photo']['name'])){ $file_name = substr( md5( time() ), 0, 10 ) . '_' . $_FILES['photo']['name']; }else{ $file_name = basename($_FILES['photo']['name']); }
Så skal du flytte: $description = mysql_real_escape_string($_POST['description']); mysql_query("INSERT INTO photos (description, photo) VALUES ('".$description."', '".$file_name."')")or die(mysql_error());
til denne "block": else{ echo '<h3 style="color:red;">No file selected</h3>'; }
så det bliver: else{ $description = mysql_real_escape_string($_POST['description']); mysql_query("INSERT INTO photos (description, photo) VALUES ('".$description."', '".$file_name."')")or die(mysql_error()); echo '<h3 style="color:red;">No file selected</h3>'; }
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.