kilik Skrevet 13. mars 2015 Del Skrevet 13. mars 2015 Har et par slik do While(0) i koden jeg holder på med nå. Synes også lesbarheten og forståelsen er langt bedre. Men hva er egentlig grunnen til at en man ikke kan bryte ut av en if? Lenke til kommentar
Matsemann Skrevet 13. mars 2015 Del Skrevet 13. mars 2015 Du kan i praksis det, koden på forrige side kunne også brukt "else if" og ville da hoppet ut. F. eks. if(!$_PAGE['exists']){ notice('error','Siden eksisterer ikke'); }else if($_PAGE['access']!=1){ notice('error','Siden er ikke tilgjenlig');} osv. evt. fordi problemet kan løses elegant slik jeg viste, med en funksjon med return. Lenke til kommentar
kilik Skrevet 13. mars 2015 Del Skrevet 13. mars 2015 (endret) Da må vel programmet kjøre else-delen. Jeg tenker meg en slik struktur, helt hypotetisk altså: if{ (test1){ break; } runSomething(); (test2){ runAnotherThing(); break; } . . . (testn){ break; } runSuccessful(); } Kjøretiden hadde vel også vært raskere om noe slikt gikk an, da den kan f.eks. bryte ut av hele greia allerede etter kalkulering av første kondisjon. Endret 13. mars 2015 av kilik Lenke til kommentar
quantum Skrevet 15. mars 2015 Del Skrevet 15. mars 2015 (endret) Der er jeg uenig Matsemann. Logikk hører ikke hjemme i funksjoner. Hvis logikken din er så enkelt at det ikke har noen hensikt i å dele den opp, har du selvsagt rett. Ellers ikke. Endret 16. mars 2015 av quantum Lenke til kommentar
kilik Skrevet 16. mars 2015 Del Skrevet 16. mars 2015 (endret) Er Pear gammeldags nå? Brukes det fortsatt av mange? Har sjekket ut diverse tutorials på nettet og fleste er rundt 10 år gamle... Endret 16. mars 2015 av kilik Lenke til kommentar
Matsemann Skrevet 16. mars 2015 Del Skrevet 16. mars 2015 Ikke brukt det på år og dag selv. Brukt Composer for å hente ned dependencies der jeg har jobbet tidligere. Lenke til kommentar
kilik Skrevet 4. mai 2015 Del Skrevet 4. mai 2015 (endret) Sliter med spesialkarakterer. Har en funksjon som henter ut ordrer for en vare slik: function getAllOrdreVare($sVareNr) { $sql = "SELECT ordre.id, FROM arbeidsordret ordre, arbeidsloggt logg, varet vare WHERE ordre.id = logg.arbeidsordreid AND logg.vareid = vare.id AND vare.varenr = '$sVareNr'"; hvor $sVareNr kan inneholde både nummer og bokstaver. Den fungerer helt fint utenom til enkelte varenr som f.eks: 'AU097AA#AC3' tolkes som 'AU097AA' 'ND218NO+40Y7734' tolkes som 'ND218NO 40Y7734' Følgelig returnerer databasen ingen ordrer i disse tilfellene. Noen som vet en løsning? Endret 4. mai 2015 av kilik Lenke til kommentar
Matsemann Skrevet 4. mai 2015 Del Skrevet 4. mai 2015 Ja, bruk prepared statements, koden din er åpen for sql-injections. F.eks hva om man bruker ABC';DROP TABLE ordre som varenr? Da slettes hele databasen din! Problemet nå er at varenr ikke tolkes som data men som en del av sql-spørringen, derav sikkerhetshull og rare resultater. PDO/prepared statements fikser begge deler i samme slengen. 1 Lenke til kommentar
trondes Skrevet 8. mai 2015 Forfatter Del Skrevet 8. mai 2015 Sliter med spesialkarakterer. Har en funksjon som henter ut ordrer for en vare slik: function getAllOrdreVare($sVareNr) { $sql = "SELECT ordre.id, FROM arbeidsordret ordre, arbeidsloggt logg, varet vare WHERE ordre.id = logg.arbeidsordreid AND logg.vareid = vare.id AND vare.varenr = '$sVareNr'"; hvor $sVareNr kan inneholde både nummer og bokstaver. Den fungerer helt fint utenom til enkelte varenr som f.eks: 'AU097AA#AC3' tolkes som 'AU097AA' 'ND218NO+40Y7734' tolkes som 'ND218NO 40Y7734' Følgelig returnerer databasen ingen ordrer i disse tilfellene. Noen som vet en løsning? med å bruke mysqli::escape_string( $value ) eller PDO::quote( $value ) så vil dette løse seg. Og som Matsemann skriver over er koden du nå har veldig utsatt for sql-injections. Tronds Lenke til kommentar
trondes Skrevet 10. mai 2015 Forfatter Del Skrevet 10. mai 2015 Hmm.. hvis jeg får inn en variabel via $_GET jeg vet at den skal være et tall, og jeg bruker det som den. Vil det da ikke være nok å kjøre (int)$_GET['tall'] på den eller ( $_GET['tall'] + 0 ). Er vel ikke noe "ond" kode som vil overleve det hvis jeg bruker den i feks en SQL query ? $test1 = "khkj"; $test2 = "' OR 1 OR '"; $test3 = ")(/&%¤#\""; $test4 = 34; print (int)$test1."<br>"; // output 0 print (int)$test2."<br>"; // output 0 print (int)$test3."<br>"; // output 0 print (int)$test4."<br>"; // output 34 Lenke til kommentar
Crowly Skrevet 10. mai 2015 Del Skrevet 10. mai 2015 Det skal være nok med type casting. Men er en god vane å bruke prepared statments uansett. Du kan også ta en titt på filter_var() og filter_input() Lenke til kommentar
trondes Skrevet 11. mai 2015 Forfatter Del Skrevet 11. mai 2015 (endret) Det skal være nok med type casting. Men er en god vane å bruke prepared statments uansett. Du kan også ta en titt på filter_var() og filter_input() Joda, må velge det som gjør jobben. Men hvis jeg bare ønsker å ta et tall inn, og jeg ikke bryr meg om det er 0 ( vil ikke gjøre noe skadde ) så er (int) det enkleste. Ordnet til en run test bare for å se om det var noe forskjell. $startTime = microtime_float(); for( $i=0; $i < 2000000; $i++){ $var = "kjhkh"; // $tall = (int)$var; // 0.28ms // $tall = filter_var( $var, FILTER_VALIDATE_INT ); // 0.65ms // $tall = ($var+0); // 0.19ms } print microtime_float()-$startTime."\n"; function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } Fikk 0.28 på (int) og 0.65 på filter_var, den som kom best ut var ( $var+0). MEN dette var jo med 2 mill. ganger. Er vel sjelden det skal gjøres så mange ganger Endret 11. mai 2015 av trondes Lenke til kommentar
kilik Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 (endret) Hvordan ville dere løst det her? Har litt enkelt forklart en tekstboks og en søkeknapp fra før: <TD><input type="text" name="sok_vare" maxlength="20" size="15"></TD> <TD><input type="submit" value="Søk" name="sokvare"></TD> <?php if(isset($_POST['sokvare']) ) { //vis søkesvar på siden } ?> Da er det bare å skrive inn og trykke enter, så skjer søket. Men så prøver jeg å legge til en knapp i tillegg øverst på siden: //Trykk knapp for å forandre en verdi i databasen <input type="submit" value="Oppdater i vareliste" name="submitpris"></TD> <?php <if(isset( $_POST['submitpris'])){ //kjør database insert-funksjon } ?> Problemet da er at enter-knapp for å søke ikke lenger fungerer. I stedet når man trykker enter, så blir "submitpris" kjørt. Jeg antar browseren da bruker den første submit-knappen den finner på siden som default ved enter-trykk. Det enkle er jo å flytte søkefeltet øverst på siden, men det må da finnes en bedre løsning. CSS, Javascript? Endret 2. juni 2015 av kilik Lenke til kommentar
Matsemann Skrevet 2. juni 2015 Del Skrevet 2. juni 2015 Du må ha forskjellig form-tags rundt de forskjellige skjemaene. Når man trykker enter submites knappen tilhørende formen man er i. Lenke til kommentar
Toolshed Skrevet 3. juni 2017 Del Skrevet 3. juni 2017 Lurer litt på hva folk bruker av editor når de utvikler, selv bruker jeg Atom (https://atom.io/). Lenke til kommentar
Thorbear Skrevet 7. juni 2017 Del Skrevet 7. juni 2017 Har bare holdt på med små script på inntil noen hundre linjer i PHP, men til det har jeg syntes SublimeText har vært ypperlig. Skulle jeg jobbet med noe større så ville jeg nok vurdert PhpStorm, er litt fan av JetBrains sine produkter. Lenke til kommentar
Håvard Skrevet 8. juni 2017 Del Skrevet 8. juni 2017 Nettopp gått over til Visual Studio Code, veldig fornøyd sålangt. Lenke til kommentar
xibriz Skrevet 8. juni 2017 Del Skrevet 8. juni 2017 Bruker NetBeans. Fungerer veldig bra til større prosjekter. 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å