I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Du kan bruge funktionen: http://php.net/getimagesize til at finde størrelsen og filtype af det uploadede billed. På index 0 i arrayt som getimagesize returnerer finder du billedts bredde. På index 1 i arrayt som getimagesize returnerer finder du billedts højde.
Du kan efterfølgende lade være med at gemme billedet hvis dimensionerne ikke er tilfredsstillende.
Ang. det andet spg., er det vil ikke så svært at registrere i en database hvor mange billeder der er blevet uploadet fra en given IP adresse!
// Checker om filen blev sendt. if ( !copy($_FILES["file"]["tmp_name"], $mappe . $_FILES["file"]["name"]) ) { print "Filen blev ikke sendt!"; } else { // Upload lykkedes print "Fil sendt!"; } } else { // Filens højde eller bredde er større end 128 print "Filens dimensiner er for store (Max. 128x128)"; } } ?>
<?php if ( isset($_FILES["file"]) ) { // Upload mappen $mappe = "./userpic/"; // Max diminsioner $max_dimensions = array('height' => 128, 'width' => 128); // Forbind til database mysql_connect('localhost', 'USERNAME', 'PASSWORD') or die( mysql_error() ); mysql_select_db('DATABASE_NAME') or die( mysql_error() ); $tabel = 'NAVNET_PÅ_TABLLEN_I_DATABASEN';
$result = mysql_query("SELECT antal_billed_uploads FROM $tabel WHERE ip = '{$_SERVER['REMOTE_ADDR']}'");
// Var der em bruger med den IP? if ( mysql_num_rows($result) > 0 ) { $row = mysql_fetch_assoc($result); } else { // IP fandtes ikke i databasen, så der oprettes en record mysql_query("INSERT INTO $tabel (ip) VALUES ('{$_SERVER['REMOTE_ADDR']}')") or die( mysql_error() ); $row['antal_billed_uploads'] = 0; }
// Har brugeren uploadet mere end 5 billeder if ( $row['antal_billed_uploads'] < 5 ) { // Array med filen dimensioner $file_properties = getimagesize($_FILES["file"]["tmp_name"]);
// Checker om filen blev sendt. if ( !copy($_FILES["file"]["tmp_name"], $mappe . $_FILES["file"]["name"]) ) { print "Filen blev ikke sendt!"; } else { // Upload lykkedes mysql_query("UPDATE $tabel SET antal_billed_uploads = antal_billed_uploads + 1 WHERE ip = '{$_SERVER['REMOTE_ADDR']}'") or die( mysql_error() ); print "Fil sendt!"; } } else { // Filens højde eller bredde er større end 128 print "Filens dimensioner er for store (Max. 128x128)"; } } else { print "Der kan max. uploades 5 billeder per. bruger"; } } ?>
Her er koden som sikrer at der kun kan uploades 5 billeder per. IP adresse ligeledes.
Du skal dog selv lige sætte databasens navn i scriptet, samt dit database username og password. Dessuden skal du sætte navnet på den tabel du har i databasen.
Tabellen i databasen skal som minimum have følgende 2 kolonner: antal_billed_uploads (INTEGER, unsigned, default 0, NOT NULL) ip (CHAR(15), NOT NULL)
Det i parenteserne er de egenskaber som kolonnen skal have!
<?php if ( isset($_FILES['file']) ) { // Upload mappen $mappe = './userpic/'; // Max diminsioner $max_dimensions = array('height' => 128, 'width' => 128); // Forbind til database mysql_connect('localhost', 'USERNAME', 'PASSWORD') or die( mysql_error() ); mysql_select_db('DATABASE_NAME') or die( mysql_error() ); $tabel = 'NAVNET_PÅ_TABLLEN_I_DATABASEN';
$result = mysql_query("SELECT antal_billed_uploads FROM $tabel WHERE ip = '{$_SERVER['REMOTE_ADDR']}'");
// Var der em bruger med den IP? if ( mysql_num_rows($result) > 0 ) { $row = mysql_fetch_assoc($result); } else { // IP fandtes ikke i databasen, så der oprettes en record mysql_query("INSERT INTO $tabel (ip) VALUES ('{$_SERVER['REMOTE_ADDR']}')") or die( mysql_error() ); $row['antal_billed_uploads'] = 0; }
// Har brugeren uploadet mere end 5 billeder if ( $row['antal_billed_uploads'] < 5 ) { // Array med filen dimensioner $file_properties = getimagesize($_FILES['file']['tmp_name']);
// Checker om filen blev sendt. if ( !copy($_FILES['file']['tmp_name'], $mappe . $_FILES['file']['name']) ) { print "Filen blev ikke sendt!"; } else { // Upload lykkedes mysql_query("UPDATE $tabel SET antal_billed_uploads = antal_billed_uploads + 1 WHERE ip = '{$_SERVER['REMOTE_ADDR']}'") or die( mysql_error() ); print "Fil sendt!"; } } else { // Filens højde eller bredde er større end 128 print "Filens dimensioner er for store (Max. 128x128)"; } } else { print "Der kan max. uploades 5 billeder per. bruger"; } } ?>
<?php if ( isset($_FILES['file']) ) { // Upload mappen $mappe = './userpic/'; // Max diminsioner $max_dimensions = array('height' => 128, 'width' => 128); // Forbind til database mysql_connect('localhost', 'USERNAME', 'PASSWORD') or die( mysql_error() ); mysql_select_db('DATABASE_NAME') or die( mysql_error() ); $tabel = 'NAVNET_PÅ_TABLLEN_I_DATABASEN';
$result = mysql_query("SELECT antal_billed_uploads, dato FROM $tabel WHERE ip = '{$_SERVER['REMOTE_ADDR']}'");
// Var der em bruger med den IP? if ( mysql_num_rows($result) > 0 ) { $row = mysql_fetch_assoc($result); } else { // IP fandtes ikke i databasen, så der oprettes en record mysql_query("INSERT INTO $tabel (ip, dato) VALUES ('{$_SERVER['REMOTE_ADDR']}', NOW())") or die( mysql_error() ); $row['antal_billed_uploads'] = 0; }
list($year, $month, $day) = explode('-', $row['dato']); // Tjekker om det er en ny dag (der tjekkes med foranstilled 0'er, da det er repræsentationen fra DATE) if ( !( $day == date('d') && $month == date('m') && $year == date('Y') ) ) { mysql_query("UPDATE $tabel SET antal_billed_uploads = 0, dato = NOW() WHERE ip = '{$_SERVER['REMOTE_ADDR']}'"); }
// Har brugeren uploadet mere end 5 billeder if ( $row['antal_billed_uploads'] < 5 ) { // Array med filen dimensioner $file_properties = getimagesize($_FILES['file']['tmp_name']);
// Checker om filen blev sendt. if ( !copy($_FILES['file']['tmp_name'], $mappe . $_FILES['file']['name']) ) { print "Filen blev ikke sendt!"; } else { // Upload lykkedes mysql_query("UPDATE $tabel SET antal_billed_uploads = antal_billed_uploads + 1 WHERE ip = '{$_SERVER['REMOTE_ADDR']}'") or die( mysql_error() ); print "Fil sendt!"; } } else { // Filens højde eller bredde er større end 128 print "Filens dimensioner er for store (Max. 128x128)"; } } else { print "Der kan max. uploades 5 billeder per. bruger"; } } ?>
Så skal du lige udvide den tabel i databasen jeg snakked om, med følgende kolonne: dato (DATE, default NULL)
Det jeg gav dig før, virker ikke helt efter hensigten, der skal lige flytten nogen kode blokke rundt. Det her skulle gerne virke efter hensigten: <?php if ( isset($_FILES['file']) ) { // Upload mappen $mappe = './userpic/'; // Max diminsioner $max_dimensions = array('height' => 128, 'width' => 128); // Forbind til database mysql_connect('localhost', 'USERNAME', 'PASSWORD') or die( mysql_error() ); mysql_select_db('DATABASE_NAME') or die( mysql_error() ); $tabel = 'NAVNET_PÅ_TABLLEN_I_DATABASEN';
$result = mysql_query("SELECT antal_billed_uploads, dato FROM $tabel WHERE ip = '{$_SERVER['REMOTE_ADDR']}'");
// Var der em bruger med den IP? if ( mysql_num_rows($result) > 0 ) { $row = mysql_fetch_assoc($result); list($year, $month, $day) = explode('-', $row['dato']); // Tjekker om det er en ny dag (der tjekkes med foranstilled 0'er, da det er repræsentationen fra DATE) if ( !( $day == date('d') && $month == date('m') && $year == date('Y') ) ) { mysql_query("UPDATE $tabel SET antal_billed_uploads = 0, dato = CURDATE() WHERE ip = '{$_SERVER['REMOTE_ADDR']}'"); $row['antal_billed_uploads'] = 0; } } else { // IP fandtes ikke i databasen, så der oprettes en record mysql_query("INSERT INTO $tabel (ip, dato) VALUES ('{$_SERVER['REMOTE_ADDR']}', CURDATE() )") or die( mysql_error() ); $row['antal_billed_uploads'] = 0; }
// Har brugeren uploadet mere end 5 billeder if ( $row['antal_billed_uploads'] < 5 ) { // Array med filen dimensioner $file_properties = getimagesize($_FILES['file']['tmp_name']);
// Checker om filen blev sendt. if ( !copy($_FILES['file']['tmp_name'], $mappe . $_FILES['file']['name']) ) { print "Filen blev ikke sendt!"; } else { // Upload lykkedes mysql_query("UPDATE $tabel SET antal_billed_uploads = antal_billed_uploads + 1 WHERE ip = '{$_SERVER['REMOTE_ADDR']}'") or die( mysql_error() ); print "Fil sendt!"; } } else { // Filens højde eller bredde er større end 128 print "Filens dimensioner er for store (Max. 128x128)"; } } else { print "Der kan max. uploades 5 billeder per. bruger"; } } ?>
Er du sikker? For det kan altså på ingen måde lade sig gøre!
Det eneste sted databasen bliver opdateret med +1 er her:
// Checker om filen blev sendt. if ( !copy($_FILES['file']['tmp_name'], $mappe . $_FILES['file']['name']) ) { print "Filen blev ikke sendt!"; } else { // Upload lykkedes mysql_query("UPDATE $tabel SET antal_billed_uploads = antal_billed_uploads + 1 WHERE ip = '{$_SERVER['REMOTE_ADDR']}'") or die( mysql_error() ); print "Fil sendt!"; }
Og hvis den skriver "Filen blev ikke sendt!" kan den umuligt også opdaterer!
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.