Nytt i forumet
Senaste privatannonserna
Prylar säljes, köpes, bytes och skänkes
Säljes
Köpes
Skänkes
- free TORCHLIGHTIdag
| 2012-04-27, 21:41 | #1 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
PHP, uppladdningsskript
Jag var en gång i tiden riktigt vass på PHP, dock märkte jag i dag, när jag skulle göra ett uppladdningsskript, hur förbannat snabbt kunskaperna försvinner om man inte sysslar med det regelbundet.
Skulle någon kunna snygga upp den här otroligt fula PHP-koden som jag har knåpat ihop nu under kvällen? Det vore guld värt. Funderingar:
EDIT: För att slumpa fram en bokstav mellan A-Z: chr(rand(65,90)) För att slumpa fram en bokstav mellan a-z: chr(rand(97,122)) Senast redigerad av Subdubwise 2012-04-27 klockan 22:03. |
|
| 2012-04-27, 22:09 | #2 |
havsmonstretMedlem Plats: Helsingborg Registrerad: apr 2010 |
Att slumpa fram ett filnamn sådär är väl ingen vidare bra ide. Ta istället fram en hash (Med MD5 eller SHA till exempel) och använd det som filnamnet. Då blir risken för kollisioner riktigt liten.
|
|
| 2012-04-27, 22:12 | #3 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
Citat:
Anledningen till while() istället för if() är ifall det, sjukt osannolikt nog, skulle bli krock två gånger om med filnamnen. Några tips? |
|
| 2012-04-27, 22:41 | #4 |
havsmonstretMedlem Plats: Helsingborg Registrerad: apr 2010 |
$s = hash('sha256', $filename);
|
|
| 2012-04-27, 22:45 | #5 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
Citat:
Minns dock inte hur den bör se ut. |
|
| 2012-04-27, 22:51 | #6 |
havsmonstretMedlem Plats: Helsingborg Registrerad: apr 2010 |
Oj, självklart ska filen hashas och inte namnet. Jag som tänkte dumt. Den här funktionen kanske fungerar bättre: http://php.net/manual/en/function.hash-file.php
|
|
| 2012-04-28, 19:29 | #7 |
hamreMedlem Plats: Uppsala Registrerad: apr 2003 |
$errors = array();
if(!empty($errors)){
$image_ext = strtolower(pathinfo($image_name, PATHINFO_EXTENSION));
|
|
|
| 2012-04-28, 21:39 | #8 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
Citat:
![]() Det verkar dock som att $errors = array(); inte behöver anges, utan det fungerar väl även utan den raden. Skulle du kunna förklara, kortfattat, vad skillnaden är mellan print() och echo() – samt varför det behövs en foreach() för att kunna skriva ut innehållet i arrayen på det här viset. Jag förstår mig inte alls på den logiken. ![]() Jag märkte att med print() skriver den ut varje "array-post" efter varandra, medan med echo() skriver den ut hela arrayens innehåll på en och samma gång – vilket då inte gav möjlighet till att skriva ut exempelvis <br /> efter varje array-post. Vad skillnaden i helhet är förstår jag dock inte. |
|
| 2012-04-28, 22:28 | #9 |
hamreMedlem Plats: Uppsala Registrerad: apr 2003 |
Skillnaden mellan print och echo är nästan ingenting. Det är vissa som säger att echo är nån millisekund snabbare än print. Det är alltså upp till en själv vad man tycker är snyggast. Jag började min programmering med print och har hållit mig till det ändå sen dess.
Som du kanske märkt om du inte har foreach satsen och bara skriver ut $errors så är det enda du får utskrivet "Array". Det foreach gör är att för varje element i arrayen $errors så sätts dess value till variabeln $error i ren text så du kan skriva ut detta på sidan och inte bara skriva ut "Array". |
|
|
| 2012-04-28, 22:34 | #10 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
Citat:
![]() Är detta användningsområdet foreach()'s egentliga syfte? Det verkar nämligen vara så, efter att ha tagit en snabb titt på php-dokumentationen om det. Jag förstår mig nämligen inte inte riktigt på logiken med namnet "for each".
|
|
| 2012-04-28, 22:49 | #11 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
Citat:
Hur ska jag då göra för att lägga till radbrytningar och dylikt efter varje array-port, när jag sätter ihop alla array-poster i en och samma variabel? |
|
| 2012-04-28, 22:53 | #12 |
NeonxzMedlem Plats: Stockholm Registrerad: aug 2008 |
Citat:
Den kan lika gärna skrivas som en for-sats som skulle se ut:
for ($i=0; $i<sizeof($array); $i++) {
for ($i=0; $i<sizeof($array); $i++) {
Citat:
if(!empty($errors)){
Senast redigerad av Neonxz 2012-04-28 klockan 22:59.
__________________
//Neon - Citera mig så jag hittar tillbaka! Intel i5 750 @ 3.6Ghz || PowerColor Radeon 5850 1GB || Asus P7P55D-E PRO || Corsair 4GB DDR3 1600MHz || 150GB Velociraptor || Asus XonarDX 7.1 || Fractal Design Define R2 || Microsoft Windows 7 Professional
|
|
|
| 2012-04-28, 22:57 | #13 |
hamreMedlem Plats: Uppsala Registrerad: apr 2003 |
Citat:
Hur menar du att spara resultatet från print i en variabel? foreach är ju som namnet säger. För varje (någonting SOM någonting){ GÖR DETTA } |
|
|
| 2012-04-28, 23:45 | #14 |
SubdubwiseMedlem Plats: Falkenberg Registrerad: apr 2011 |
Citat:
Citat:
Fördelen med print() var, som sagt, att man kunde trycka in <br /> efter varje array-post, nackdelen var dock att det inte gick att spara resultatet i en variabel då resultatet skrevs ut på direkten. Så hur jag ska göra vet jag inte.
|
|
| 2012-04-29, 01:45 | #16 |
infinity08Medlem Plats: stockholm Registrerad: aug 2008 |
Citat:
![]() Själv har jag gjort en egen funktion för detta dock:
// Print array nicely
Citat:
Isåfall:
echo implode("<br />",$helloworld);
|
|
|
Redaktionens senaste nyhetsrubriker
Prylar säljes, köpes, bytes och skänkes