qualbeen Skrevet 15. juni 2009 Del Skrevet 15. juni 2009 Hva med en kort liten beskrivelse av hva scriptet ditt gjør? Uploade noe? (Sjekt å vite intensjonen bak koden, uten å måtte lese den ) Lenke til kommentar
emilkje Skrevet 16. juni 2009 Del Skrevet 16. juni 2009 Ja såklart =) hadde det meget travelt da jeg skrev posten, så jeg glemte det helt... Dette scriptet laster opp og organiserer filer på en enkel måte.. Du velger filen du vil laste opp, deretter velger du katergori filen tilhører, og deretter laster du den opp. Denne filen vil bli plassert i mappen som tilhører kategorien. Du har også mulighet til å slette filer som er lastet opp ved å trykke på et lite rødt ikon. Hele poenget med dette scriptet er at det ikke skal være behov for en database. På denne måten kan mange bruke det uten å måtte bruke penger på et webhotell + database. Jeg velger å ikke offentliggjøre demoen da scriptet ikke har noen form for sikkerhet. PS: Lenke sendt per PM Lenke til kommentar
qualbeen Skrevet 16. juni 2009 Del Skrevet 16. juni 2009 Med sessionstyrt innlogging rundt, så vil du jo få en god løsning. Om det var det du mente ang. sikkerhet. Eller er du rett for xss-angrep o.l.? Men ja; kjørte opp koden på localhost, for å leke meg. Mulighet for å administrere kategoriene hadde jo også vært kjekt; er jo ikke vanskelig å opprette mapper eller scanne etter nye mapper med php heller Lenke til kommentar
emilkje Skrevet 17. juni 2009 Del Skrevet 17. juni 2009 Ja, koden min er ekstremt mottakelig for xss angrep Ja det var det jeg hadde tenkt som neste steg.. pluss at jeg skal flytte det meste av 'logikken' fra index.php inn i klassene og organisere de litt bedre slik at den blir lettere å migrere til andre servere. Men har ikke alt for mye fritid nå til dags.. Jobben i Forsvaret tar alt for mye av tiden min, så jeg får se om jeg orker å fortsette på det. Takk for heads-up uansett Emil Lenke til kommentar
AlecTBM Skrevet 18. juni 2009 Del Skrevet 18. juni 2009 Hvis den er, som du sier, ekstremt mottakelig for xss angrep, så passer den vell egentlig ikke inn her etter min mening Lenke til kommentar
Wackamole Skrevet 18. juni 2009 Del Skrevet 18. juni 2009 Den passer inn her, men kanskje ikke i den tråden hvor alt skal lagres etterhvert. Dette er området for diskusjon rundt script, og kode som blir lagt ut, uansett type, sikkerhet, størrelse, funksjon osv. - Vil bare si at scriptet er nyttig for folk som ikke har en trang for sikkerhet, for folk som er i begynnelsen av og programmere/kode i php, og vil kanskje kunne lære av scriptet, siden det benytter mange funksjoner som så oftes blir brukt heller skjeldent enn ofte. Det jeg skulle ønske var at noen som faktisk drev med dette som jobb, og hadde erfaring fra å jobbe med dette til daglig, hadde postet en kode. - Spesielt jeg som er mye interessert i OOP og ekstra spesielt interessert i Joomla! moduler som er kodet for phun - Da tiden min i framtiden kommer til og gå ekstra mye med til akkurat dette CMS'et. Lenke til kommentar
LoS Skrevet 18. juni 2009 Del Skrevet 18. juni 2009 (endret) Ikke en dritt som havner i det lageret uansett. Endret 18. juni 2009 av LoS Lenke til kommentar
Wackamole Skrevet 2. juli 2009 Del Skrevet 2. juli 2009 Synd at det er så lite aktivitet her som det faktisk er, sikkert mange som ønsker ting som dem kan ha som et referanse punkt når dem lærer. Lenke til kommentar
Wackamole Skrevet 13. september 2009 Del Skrevet 13. september 2009 Noen som har en meget god innloggnings klasse? - topp sikkerhet osv. sry for dobbelpost, men ønsker mer aktivitet i denne delen. Lenke til kommentar
qualbeen Skrevet 15. november 2009 Del Skrevet 15. november 2009 Noen som har en meget god innloggnings klasse? - topp sikkerhet osv. "Topp sikkerhet osv" ... nei, dette høres nå snedig ut. Innlogging kan foregå på temmelig mange ulike måter. Mange nettsteder (facebook, google, etc) benytter cookies til å holde på brukerinfo. Mer kritiske nettsteder baserer seg på sessions. Da enten i form av at sesjonen avsluttes etter f.eks. fem minutter uten forespørsler til server, eller så termineres sesjonen når nettleseren stenges. Trafikken mellom maskinene kan sendes i klartekst (http) eller kryptert (https), og det er ikke uvanlig å verifisere med sertifikater (skandiabanken). Nevnte bank tilbyr også sms-verifisering for å sjekke at du er nettopp deg (noe også chess, netcom m.fl. gjør). Egentlig finnes uendelig mange ulike måter å verifisere brukere på. Men det du ønsker deg er vel heller en implementasjon av pålogging - og ikke en utgreiing over hvilke løsninger som finnes. Så la oss si man skal lage et helt simpelt påloggingsscript. En enkel løsning kan være basert på .htaccess. Da vil serveren (Apache) ta seg av hvorvidt bruker skal ha tilgang til systemet eller ei. Men siden vi er i en PHP-tråd, er det vel mest interessant å diskutere php-baserte løsninger? Et eller annet lurt sted må korrekt brukernavn og/eller passord være lagret. Normalen er at begge deler trengs for å bli verifisert. Og slik info blir av de fleste dynamiske systemer lagret i en database. Passordet er gjerne hashet (md5, sha1, etc), slik at ikke en gang systemadministrator kan hente ut passordet fra databasen. Alternativet er å lagre passordet i f.eks. flatfiler (eller direkte i .php-fila), men det blir nå opp til utviklers valg. Dumt er det iallefall å putte brukernavn og passord i en fil som er tilgjengelig for andre enn php-scriptet! Vel, tenkte jeg skulle avslutte her med at gode kode-eksempler finner du på google. Men av to tilfeldige artikler jeg gikk inn på, bekymret den ene forfatteren seg for om man hadde feltlengde på 40 eller 225 tegn i "password"-feltet i databasen (med sha1-kryptering får man ikke lengre strenger enn 40 tegn), og den andre artikkelen hadde slett validering av sql + viste til funksjoner som ble deprecated i 5.3.0 (og er fjernet fra og med PHP 6) Så i mangel av gode treff; nei, ingen som har noen god klasse til deg Lenke til kommentar
Wackamole Skrevet 20. november 2009 Del Skrevet 20. november 2009 Det jeg tenker på i forhold til sikkerhet er at koden er lite mottakelig for hacking/cracking. i form av SQL injections etc. - Vil gjerne se en klasse hvor dette er tatt hensyn til og kan tenkes på som et påloggnigs klasse med GOD sikkerhet Lenke til kommentar
qualbeen Skrevet 20. november 2009 Del Skrevet 20. november 2009 Mitt beste svar til det, må bli å benytte et rammeverk som håndterer slik for deg. Prepared Statements finnes det temmelig mange ulike løsninger for, og absolutt noe jeg anbefaler deg å ta en titt på :-) Forøvrig hjelper det lite om ett script på siden er "sikkert", hvis annen kode er åpen for SQL-injections. Man er aldri sterkere enn det svakeste ledd ;-) Lenke til kommentar
Wackamole Skrevet 5. desember 2009 Del Skrevet 5. desember 2009 Enig, og har sett på ulike rammeverk hvordan dem har gjort det og hvordan dem har prøvd på forhinde f.eks. sql-injections. Uansett, ny $_REQUEST[]! (eller $_GET[] ? ) CSS kode cache script, pluss cache script til innhold (tittel, ingress, body). - Noen som har lyst og dele? Lenke til kommentar
Ernie Skrevet 11. desember 2009 Del Skrevet 11. desember 2009 Kanskje på tide med en kodesnutt her? /** * Deletes $path and anything it contains recursively. Though it will work * with relative paths, absolute paths are recommended as functions like chdir * will change PHPs working directory, thus also changing where the relative * path is. * * @param $path string Directory to delete * @return boolean Returns true if everything went well, false if not */ function deleteDirectoryRecursive($path) { //To prevent error messages to appear, when $path doesn't exist we just // return false right away if (file_exists($path) === false) return false; //If $path is a directory (which it should be), we will scan it and delete // anything that exists in it before we delete the directory itself. elseif (is_dir($path) === true) { $dir = scandir($path); for ($i = 0, $len = count($dir); $i < $len; $i++) { $element = $dir[$i]; $elementPath = $path.'/'.$element; //We should probably skip current level and the level above if ($element === '.' || $element === '..') continue; //If the element is a directory, we'll make a recursive call to this // function to make sure we delete any content before deleting the // directory itself. elseif (is_dir($elementPath) === true) { if (deleteDirectoryRecursive($elementPath) === false) return false; } elseif (unlink($elementPath) === false) return false; } //We've deleted any content in the directory. Now we can safely delete // the directory $path. return rmdir($path); } //We'll delete $path even if it's not a directory // (i.e. misuse of this function) else return unlink($path); } Kjapt snekret sammen på natta. Utestet i Windows, men bør fungere i og med at jeg ikke bruker unlink på mapper (mener å huske det ikke helt fungerer). Fungerer iallfall i Linux (dvs. strengt tatt bare testet i Fedora). Uansett, returnerer true hvis mappen + innhold blir slettet og false hvis mappen ikke eksisterer eller ikke ble slettet. Den vil forøvrig også stoppe straks noe går galt. Lenke til kommentar
Thomas. Skrevet 23. januar 2010 Del Skrevet 23. januar 2010 Så enig, så enig. Jeg har selv en DB-klasse, og jeg ser nå at den inneholder kode som ikke er blitt endret på på over flere år. Et godt og funksjonelt rammeverk er et must for min del. Eksempel på hvordan denne kan brukes? Lenke til kommentar
Jonas Skrevet 23. januar 2010 Del Skrevet 23. januar 2010 (endret) Viste jeg ikke det da? Endret litt på den, nytt eksempel følger. <?php class MySQL { private $mysqlAddress; private $mysqlUsername; private $mysqlPassword; private $mysqlDatabase; private $mysqlConnection; private $mysqlErrors = array (); private $mysqlQueries = array (); private $mysqlNumQueries = 0; private $mysqlNumRows = 0; private $mysqlAffectedRows = 0; private $mysqlTotalTime = 0; public function __construct ( $address, $username, $password, $database ) { $this -> mysqlAddress = $address; $this -> mysqlUsername = $username; $this -> mysqlPassword = $password; $this -> mysqlDatabase = $database; } public function Connect () { if ( is_resource ( $this -> mysqlConnection ) ) return true; elseif ( $this -> mysqlConnection = mysql_connect ( $this -> mysqlAddress, $this -> mysqlUsername, $this -> mysqlPassword, true ) ) if ( $this -> SelectDB ( $this -> mysqlDatabase ) ) return true; else throw new Exception ( 'Unable to connect to the MySQL-server.' ); } public function SelectDB ( $database ) { if ( !is_resource ( $this -> mysqlConnection ) ) throw new Exception ( 'Not connected to any MySQL-server.' ); if ( mysql_select_db ( $database, $this -> mysqlConnection ) ) return true; else throw new Exception ( 'Unable to select the database.' ); } public function GetNext ( $query, $type = MYSQL_ASSOC ) { if ( array_key_exists ( $query, $this -> mysqlQueries ) ) return mysql_fetch_array ( $this -> mysqlQueries[$query], $type ); $this -> mysqlQueries[$query] = $this -> Run ( $query ); return $this -> GetNext ( $query, $type ); } public function Run ( $query ) { if ( is_array ( $query ) ) return array_map ( array ( &$this, 'run' ), $query ); if ( !$this -> Connect () ) throw new Exception ( 'Unable to run query while not connected to any MySQL-server.' ); $time = microtime ( true ); $resource = mysql_query ( $query, $this -> mysqlConnection ); if ( !$resource ) throw new Exception ( 'Query failed.' ); else { $this -> mysqlNumQueries++; $this -> mysqlTotalTime += microtime ( true ) - $time; if ( stristr ( $query, 'select' ) ) $this -> mysqlNumRows = mysql_num_rows ( $resource ); if ( stristr ( $query, 'insert' ) || stristr ( $query, 'update' ) || stristr ( $query, 'delete' ) || stristr ( $query, 'replace' ) ) $this -> mysqlAffectedRows = mysql_affected_rows ( $this -> mysqlConnection ); return $resource; } } public function GetRow ( $query, $type = MYSQL_ASSOC ) { return mysql_fetch_array ( $this -> run ( $query ), $type ); } public function GetNumRows () { return $this -> mysqlNumRows; } public function GetAffectedRows () { return $this -> mysqlAffectedRows; } public function GetMysqlConnection () { return $this -> mysqlConnection; } public function GetNumQueries () { return $this -> mysqlNumQueries; } public function GetTotalQueryTime () { return $this -> mysqlTotalTime; } public function GetLastId () { return mysql_insert_id ( $this -> mysqlConnection ); } public function Escape ( $string ) { return mysql_real_escape_string ( $string, $this -> mysqlConnection ); } public function __destruct () { if ( is_resource ( $this -> mysqlConnection ) ) mysql_close ( $this -> mysqlConnection ); } } ?> <?php try { $database = new MySQL ( 'address', 'username', 'password', 'database' ); while ( $nextRow = $database -> GetNext ( 'SELECT * FROM whatever' ) ); print_r ( $nextRow ); print_r ( $database -> GetNext ( 'SELECT * FROM whatever LIMIT 1' ) ); } catch ( Exception $error ) { die ( 'An MySQL error occured: ' . $error -> getMessage () ); } ?> Endret 23. januar 2010 av Jonas Lenke til kommentar
xqus Skrevet 24. januar 2010 Del Skrevet 24. januar 2010 Ikke helt finpusset, men lar deg hvertfall kryptere strenger/array osv klart til å legges inn i en fil/database osv. CIK ene er hovednøkler, i tillegg så har brukeren en egen nøkkel ($ckey). define('CIK', '001'); // Define what CIK we are currently using to encrypt data define('CIK_001', 'ensuperhemmelihnokkel'); /** * @param string $data Serialized array with encrypted data from @link encrypt() * @param string $ckey User crypto key * @return mixed Decrypted data */ function decrypt($srldata, $ckey) { $data = unserialize($srldata); if(isset($data['iv']) && sizeof($data) == 5) { // We got some of it, hopefully all of it. $td = mcrypt_module_open($data['algo'], '', $data['mode'], ''); $iv = base64_decode($data['iv']); $ks = mcrypt_enc_get_key_size($td); $key = crypto_get_key($ks, $ckey, constant('CIK_'.$data['cik'])); mcrypt_generic_init($td, $key, $iv); $decrypted = unserialize(mdecrypt_generic($td, base64_decode($data['cdata']))); if(is_array($decrypted)) { $decrypted['crypto_algo'] = $data['algo']; $decrypted['crypto_mode'] = $data['mode']; } } else { if($data) { $decrypted = $data; } else { $decrypted = $srldata; } } return $decrypted; } /** * @param mixed $data Data to encrypt * @paramstring $ckey User crypto key * @return string Serialized array with encrypted data and metainformation */ function encrypt($data, $ckey='') { if(!empty($ckey)) { $td = mcrypt_module_open('rijndael-256', '', 'cbc', ''); $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_RAND); $ks = mcrypt_enc_get_key_size($td); $key = crypto_get_key($ks, $ckey, constant('CIK_'.CIK)); /* Intialize encryption */ mcrypt_generic_init($td, $key, $iv); /* Encrypt data */ $encrypted['cdata'] = base64_encode(mcrypt_generic($td, serialize($data))); $encrypted['algo'] = 'rijndael-256'; $encrypted['mode'] = 'cbc'; $encrypted['iv'] = base64_encode($iv); $encrypted['cik'] = CIK; /* Terminate encryption handler */ mcrypt_generic_deinit($td); mcrypt_module_close($td); return serialize($encrypted); } else { return serialize($data); } } function crypto_get_key($ks, $ckey, $cik) { /* Create key */ $key1 = md5($ckey); $key2 = md5($cik); $key = substr($key1, 0, $ks/2) . substr(strtoupper($key2), (round(strlen($key2) / 2)), $ks/2); $key = substr($key.$key1.$key2.strtoupper($key1),0,$ks); return $key; } Lenke til kommentar
Wackamole Skrevet 22. februar 2010 Del Skrevet 22. februar 2010 Jeg er ute etter ett godt image class tingy - nesten et eget framework basert på ting kun for og endre/redigere bilder. Lenke til kommentar
AlecTBM Skrevet 26. februar 2010 Del Skrevet 26. februar 2010 ImageMagick?? Er litt tynt det du spør om, og noe av det beste blir vell ImageMagick Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå