Gå til innhold

NH

Medlemmer
  • Innlegg

    190
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av NH

  1. dette kommer av magic_quotes_gpc (GPC = GET/POST/COOKIE) som automatisk escaper ' og " med \ og er der for sikkerhet opp imot mysql og lignende så slike tegn ikke skal gjøre noen skade i SQL spørringer og lignende.

     

    av sikkerhetsmessige årsaker ville jeg heller brukt:

     

    htmlentities(stripslashes($str), ENT_QUOTES);
    

    da ' og " blir gjort om til ' og " så di mister funksjonen sin, men vises som vanlig alikevel...

  2. har laget en klasse for det.

     

    <?php
    //klassen her
    class random_img{
    
    var $files = array();
    
    function random_img($dir){
     $this->getImages($dir);	
    }
    
    function getImages($dir){
     if(substr($dir, -1, 1) != '/' && !empty($dir)){
     	$dir .= '/'; //Dobbeltsjekk at $dir slutter med "/" for bruk av undermapper...	
     }
     
     $dh  = opendir($dir);
     while (false !== ($filename = readdir($dh))) {
     	if($filename != '.' && $filename != '..'){
       if(@getimagesize($dir.$filename) == true){
       	//echo "Bilde: $filename<br>\n";
           $this->files[] = $dir.$filename;
       }
       if(is_dir($dir.$filename) == true){
       	//echo "<h2>Fant mappe: $filename</h2>\n";
       	$this->getImages($dir.$filename); //kjøre metoden igjen for flere bilder...	
       }
     	}
     }
    }
    
    function getRandImg(){
     $imgid = mt_rand(0, count($this->files));
     return $this->files[$imgid];	
    }
    
    }
    //Slutt på klasse
    $img = new random_img('bilder/'); //initier søkingen etter bilder, legg med første mappen her
    $randomimg = $img->getRandImg(); //hent et random bildeadresse
    echo '<img src="'.$randomimg.'" />'; //vis bildet...
    ?>
    

  3. du spesifiserer ikke lengde på text, den er "uendelig".

     

    VARCHAR | Brukes oftest til lagring av begrensede tekster, som brukernavn, epost adresser, stedsnavn etc.

     

    en god tråd finnes her:

    http://mysql.digipedia.pl/mysql/en/column-type-overview.html

     

    tinyint, smallint, mediumint, int og bigint brukes til lagring av siffer

     

    ta en titt her:

    http://mysql.digipedia.pl/mysql/en/numeric-types.html

     

    er vel hovedkolonne typene...

  4. denne ligger i linken jeg ga,er det virkelig så vanskelig å bruke manualen? PHP APIen er jo genial... http://php.net/funksjon_du_vil_lese_om

     

    Fra manualen:

    <?php
    $dir = "/tmp";
    $dh  = opendir($dir);
    while (false !== ($filename = readdir($dh))) {
      $files[] = $filename;
    }
    sort($files);
    print_r($files);
    ?> 
    

     

    som sagt. scandir gjør denne jobben i en håndvri

     

    $array = scandir('path/to/dir'); //sortert alfabetisk i stigende rekkefølge
    $array2 = scandir('path/to/dir', 1); //sortert i synkende rekkefølge
    

  5. spørs helt hvordan du ser på det. jeg mener at i ogmed at vi var 20 dager inn i måneden blir det riktig. For hvor lenge er egentlig en måned?

     

    man kan eventuelt hente ut antall dager siden bursdagsmåneden min, trekke i fra hvor mange dager det var inn i juni og hvor mange dager det mangler i måneden vi er i, (da calendar funskjonen kun henter ut for hele måneder) men er noe tungvindt...

  6. ZDE (Zend Develepoment Envirenment) er genialt og laget av samme gutta som lage Zend Engine(Som php bruker).

     

    Syntax higlighting er god. Programmet "kan" hele manualen og kan derfor fortelle deg flere mulige funksjoner, syntaxen på de og fullføre mens du skriver(kommer en dropdown liste med mulige funksjoner mens du skriver)

     

    Den kan alle array keys til supergloabelene, har innebygget debugger(PHP motoren er innebygd for dette) Den har også en kode analysator som gir bedre mening i feilkodene og referer til manualen (samt viser et uttrag fra manualen), men kjører ikke koden og finner derfor ikke alle feil.

     

    ZDE har også visning av feil med en rød understreks linje om du f.eks glemmer en semikolon en { eller } samt andre syntax feil på samme måte som skrivefeil i word.

     

    Og dette er langt fra allt. kunne sannsynligvis fortsatt i dagevis. ZDE er programmet som kan ALLT når det kommer til php programering og er vell verdt pengene... (99 US $(ca 750 spenn))

  7. beklager dette. hadde en liten bug i scriptet som fucket om du allerede har hatt bursdag. en oppdatert utgave:

     

    <?php
    /**
    * @author Nicolai Haugen
    * @param int $year Fødselsår (f.eks 1986)
    * @param int $month Fødsels måned (f.eks 06 (juni))
    * @param int $day Fødselsdag (f.eks 14)
    * @return int|array
    * @version 1.0
    */
    function alder($year, $month, $day){
    $curr_year = date('Y');
    $curr_month = date('n');
    $curr_day = date('j');
    
    if($day > $curr_day){
     $num_days = $day - $curr_day;	
    } else {
     $num_days = $curr_day;	
    }
    
    if($month > $curr_month){
     $num_months = $month + $curr_month;	
    } else {
     $num_months = $curr_month;	
    }
    
    $num_years = $curr_year - $year;
    
    if($month > $curr_month OR $day > $curr_day){
     $num_years = $num_years - 1;  
    } else {
     $num_days = $curr_day - $day;
     $num_months = $curr_month - $month;	
    }
    
    return array('years' => $num_years, 'months' => $num_months, 'days' => $num_days);
    }
    ?>
    

     

    fungerer på samme måten...

  8. har du tilgang til PEAR er dette et VELDIG godt alternativ. spør du meg burde dette vært instalert på SAMTLIGE php servere. i XAMMP følger så å si alle pakker med.

    http://pear.php.net

    her kan du ta en titt på DENNE pakken.

     

    Et eksempel på bruk av PEAR::Mail

     

    <?php
    include('Mail.php'); //includer PEAR fila
    
    //Motakere av mailen, kan legge til Bcc og cc etc her
    $recipients = array('To' => '[email protected]',
                       'Bcc' => '[email protected]');
    
    //mailens headere, skal alltid være laget som array!                    
    $headers['From']    = '[email protected]';
    $headers['To']      = '[email protected]';
    $headers['Subject'] = 'Test message';
    
    //Teksten vi ønsker å sende i mailen
    $body = 'Test message';
    
    //Adressen til send
    $params["host"] = 'localhost';//Adressen til smtp serveren
    $params["port"] = 25;//The port to connect. Default is 25
    $params["auth"] = false;//Whether or not to use SMTP authentication. Default is FALSE
    $params["username"] = 'brukernavn';//Brukernavnet på SMTP serveren (ikke alle smtp servere bruker dette)
    $params["password"] = 'pass';//Passordet tilhørende brukernavnet
    
    // Create the mail object using the Mail::factory method
    $mail_object =& Mail::factory('smtp', $params);
    
    $mail_object->send($recipients, $headers, $body);
    ?>
    

     

    Som du ser gir denne klassen oss en ekstremt lett måte å sende avanserte mail på. Å sende med vedlegg er heller ikke noe problem ;)

  9. Ikke så vidt jeg vet, og jeg tviler på at webhosten din gir deg tilgang til filene om du så kan.

     

    Det du eventuelt kan gjøre er å lage en tabell i db der du lagrer ipn, host, browser.

     

    denne generer du ved innlogging og sletter ved utlogging.

    LEgg til i sjekkingen om brukeren er logget inn at raden i databsen med dinne infoen må eksistere, om ikke, kjør logut prosess.

     

    Da er det bare for deg i admin systemet ditt å slette denne raden ved force utlogging...

  10. gjerne bruke mysql sine, men ikke datetime. tragisk i dette tilfellet (dessuten er timestamp my lettere jobbe med enn datetime)

     

    <?php
    $ip = $_SERVER['REMOTE_ADDR'];
    $sql = sprintf("SELECT tid FROM %s WHERE
       tid+900 > CURRENT_TIMESTAMP() AND
       ip='%s'
       LIMIT 1",
       $tabell,
       $ip);
    $result = mysql_query($sql);
    
    if (mysql_num_rows($result) == 0){
    $query = "INSERT INTO $tabell (navn, melding, ip, tid) VALUES ('$navn', '$melding', '$ip', '$tiden')";
    $result = mysql_query($query);
    }
    else{
    echo "Du må vente bittegranne!";
    }
    
    ?>
    

     

     

    sett kolonnen med tiden som TIMESTAMP og default som CURRENT_TIMESTAMP() så lagrer tiden seg automatisk

  11. Det som blir drept når brukeren lukker browseren er kjeksen som inneholder Session IDn ;)

     

    Levetiden på denne kjeksen kan endres

     

    fra php.ini:

     

    session.gc_maxlifetime - Levetiden på session hos serveren

    session.cookie_lifetime - Levetiden på kjeksen, denne levetiden er default satt til 0, dvs at den slettes npr bruker lukker browser.

     

    session_set_cookie_params() kan hjelpe deg med å endre levetiden på kjeksen

×
×
  • Opprett ny...