Gå til innhold

NH

Medlemmer
  • Innlegg

    190
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av NH

  1. om db er localhost er vel selve sendingen av data ikke ekstremt mye tregere enn over vanlig disk. bin datan må fremdeles leses og sendes til klient, smakssak spør du meg. kan spare det for mye bry til tider om du har plass/resurser til det. Kjører du derimot en ekstern database server kan jeg forstå det. Ingen vits i å skremme folk uten videre. For det var faktisk ikke hvorvidt det var lurt å lagre bilde i db han spurte om.

     

    Original side på klient siden får du ikke. Den sendes aldri så vidt jeg vet, kun selve filen. Hvorfor du er ute etter å vite dette kan jeg ikke skjønne. Kunne du omformulert spørsmålet ditt litt. forsto helt erlig ikke helt hva du er ute etter

  2. Har laget en funksjon som gjør susen,

    <?php
    function crop_image($img){
    $new_x = 80; //ønsket bredde
    $new_y = 110; //Ønsket høyde
    
    
    $allowed_filetypes = array('jpg', 'jpeg', 'png', 'gif');
    $filetype = strtolower(substr(strrchr($img, '.'), 1)); //hent ut filtypen
    
    
    if(!in_array($filetype, $allowed_filetypes)){
     //Ugyldig filtype, gi feilmelding og avslutt funksjonen
     echo $img . ' Er ikke en godkjent bildefil';
     return false;	
    }
    
    if($filetype == 'jpg') $filetype = 'jpeg';
    
    //hent ut bildet og lagre i cache
    $src = call_user_func('imagecreatefrom'.$filetype, $img);
    
    $old_x = imagesx($src);
    $old_y = imagesy($src);
    
    //regn ut hjørnene av bildene
    $cpy_x = ($old_x / 2) - ($new_x / 2);
    $cpy_y = ($old_y / 2) - ($new_y / 2);
    
    $new_img = imagecreatetruecolor($new_x, $new_y) or die("En ukjent feil oppstod");
    //Kopier midtre del av bildet
    imagecopyresampled($new_img, $src, 0, 0, $cpy_x, $cpy_y, $new_x, $new_y, $new_x, $new_y);
    //Send bildet
    imagepng($new_img);
    
    //Tøm cache
    imagedestroy($new_img);
    imagedestroy($src);  
    
    
    }
    
    $img = $_GET['img'];
    header("Content-type: image/png");
    crop_image($img);
    ?>
    

     

    Som scriptet er satt opp nå trenger du bare å lagre hele scriptet som f.eks crop.php

     

    bruk det da slik i html koden der bildet skal vises:

     

    <img src="crop.php?img=et_bilde.php" />
    

  3. Eventuelt kan du sende den med funksjonen

     

    $db = DB::connect('mysql://root@localhost/database');
    
    function myquer($dblink){
     //spørringen din
    }
    
    //kjør funksjonen
    myquery($db);
    

     

    eventuelt kan du bruke $GLOBALS i funksjonen

     

    function myquery(){
     // .....
     mysql_query($sql, $GLOBALS['db']);
     // .....
    }
    

     

    evntuelt slik:

     

    function myquery(){
     $db = DB::connect('mysql://root@localhost/database');
    }
    

     

    da er ikke $db global lenger, men en del av scopen

     

    på et eller annet vis må $db sendes inn i funksjonen du lager

  4. Dette er ikke noe som går automatisk.

    Grunnen til "joined" tables er for å spare plass i databasen, har ikke noe med størrelsen å gjøre. et godt eksempel er en vennedatabase med postnummer

     

    vennetabell

    ------------------

    id | navn | postnummer_id

    1 | Nic0 | 1

    2 | aeinstein | 2

    3 | skybert | 1

     

    bosteds tabell

    ------------------

    id | sted | postnummer

    1 | Skedsmokorset | 2020

    2 | strømmen | 2010

     

    når vi deler opp denne infoen i to tabeller sparer vi oss for dobbeltlagring av stedsnavn/postnummer og får derfor en mindre database.

    Det du kan legge i i databasen er en foreign_key. Du kan da linke sammen postnummer_id i venne databasen med id i postnummer databasen. Da vil det genereres en feilmelding om du prøver å legge til en venn med et ikke eksisterende bosteds id. Men input skjer ikke automatisk. du definerer dette i spørringen din.

     

    For å hente ut postnummer og poststed istedenfor idn i vennedatabasen kan du bruke en "left join"

     

    SELECT venn.navn, bosted.sted, bosted.postnummer
    FROM venner
    left join bosted on (venn.id = bosted.id)
    ORDER by venn.navn
    

     

    Du vil da få ut et slikt resultat:

     

    nic0 | skedsmokorset | 2020

    aeinstein | strømmen | 2010

    skybert | skedsmokorset | 2020

     

    og du har allerede nå spart deg for omtrent 1kb. du kan jo selv tenke deg dette i større omfang..

    Men foreign_key er ikke nødvendig. det hele kommer ann på hvordan du henter UT data....

  5. hehe.. jeg har nok kunn skaper om PHP for å si det sånn!

    5781492[/snapback]

     

    Hvorfor skal vi da lage det gratis om du helt fint klarer det selv? Er ikke det uansett den beste løsningen? Å lage det selv altså. da blir det jo akkurat slik DU vil ha det, noe som forhåpentligvis er slik kunden din vil ha det.

     

    Om du slenger noen kronasjer i potten får du sikkert mere respons om du vil ha et skreddersydd ett og du nekter å gjøre kodingen selv.. Men vi dytter deg gjerne i riktig retning gratis ;)

  6. problemet ditt er er om magic_quotes_gpc er på gjør PHP dette for deg gjennom GET, POST, COOKIE automatisk og du trenger ikke addslashes() over hodet ;)

     

    men om magic_quotes_gpc er av må dette gjøres...

     

    kan eventuelt løses slik:

    function add_slashes( $data){
    if(!magic_quotes_gpc() XOR is_numeric($data)){
    if(is_array($data)){
    foreach($data as $key => $value){
     if(is_array($value))
      $tilbake["$key"] = add_slashes($value);
     else
      $tilbake["$key"] = addslashes($value);
     }
    }
    return $tilbake;
    else return $data;
    }
    

     

    PS: Ingen vits i å quote forrige post... blir mindre skrolling om vi quoter minst mulig...

  7. en litt smart tabellstruktur kan spare deg for mye hodebry. tabeller kan jo faktisk jobbe sammen....

     

    om du har en brukertabell er det ikke være enn å definere i en egentabell hvem av disse som er admin...

     

     

    aid | medlems_id

     

    der id er en selvgenerert id, og medlems_id id'en fra medlemstabellen.

     

    om du vil finne admins kan du kjøre en slik spørring:

     

    om du har brukerens id fra innloggingen er det jo bare å sjekke den opp imot admin tabellen. krevver jo ikke noen joining av tabeller engang

  8. Selv liker jeg best å lage mine loggin scripts selv. gir meg større kontroll over det, over hva som skjer og hvordan data lagres. Et login script er temmelig basic, men noe avhengig av loginscriptets egenskaper...

     

    Er da bare 1 spørring opp mot en SQL database (selv foretrekker jeg postgreSQL) eventult hente ut brukernavn/passord fra filer og sammenligne'

     

    tar deg toppen et par timer...

  9. ja. skal det. er noen tegn som ikke escapes, men tror neppe det er noen sikkerhets risiko..

     

    alternativt er denne fin

     

    function quote_smart($value)
    {
      // Stripslashes
      if (get_magic_quotes_gpc()) {
          $value = stripslashes($value);
      }
      // Quote if not integer
      if (!is_numeric($value)) {
          $value = "'" . mysql_real_escape_string($value) . "'";
      }
      return $value;
    }
    

     

    brukes flott sånn

    $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s",
              quote_smart($_POST['username']),
              quote_smart($_POST['password']));
    
    

     

    legger også til enkle quotesa runt strenger i spørringen etc. så sparer du deg for noe tenking :p

×
×
  • Opprett ny...