Drittsekken Skrevet 14. februar 2006 Del Skrevet 14. februar 2006 Beskrivelse: Dette er en gallerifunksjon som automatisk finner de bildene/filene som ligger i en spesifisert mappe og lager en klikkbar thumbnails liste av disse. Det er ikke nødvendig å lage egne thumbnailsfiler, da scriptet tar seg av dette. Man kan definere hvor store thumbnailsene skal være, hvor mange kolonner det skal være og hvor mange bilder per side. Krav: - Webserver med støtte for PHP v5 (er mulig å skrives om til PHP v4) De filene man trenger samt beskrivelse ligger her. Lenke til kommentar
Peter Skrevet 24. april 2006 Del Skrevet 24. april 2006 Skrev en enkel, men nyttig funksjon idag. Tenkte jeg kunne poste den her, og høre om noen river ut håret og ser noen kritiske feil. Mistenker at indenten kommer til å se #¤%& ut, men men function listDir($dir, $filter_func) { $ret = array(); if(function_exists($filter_func) && is_callable($filter_func)) { if(is_dir($dir)) { if(is_readable($dir)) { $curr_dir = getcwd(); // undocumented notice on error? if(@chdir($dir)) { if($fp = opendir('.')) { while(false !== ($file = readdir($fp))) { if($file != '.' && $file != '..') { if(call_user_func($filter_func, $file)) $ret[] = $file; } } closedir($fp); } chdir($curr_dir); } } } } return $ret; } Kort og godt lister funksjonen filene i mappen basert på en annen definert funksjon. Merk at den hopper over "." og "..", selv om disse er mapper. F.eks. $file_list = listDir('.', 'is_file'); // lister alle filer i denne mappen $dir_list = listDir('.', 'is_dir'); // lister alle mapper i denne mappen, bortsett fra . og .. Fungerer også (regner jeg med) for egendefinerte funksjoner som returnerer TRUE/FALSE basert på ett argument. eks. (Delvis pseudo-kode) function is_image($img) { if(er_bilde) return true; else return false; } $img_list = listDir('.', 'is_image'); Lenke til kommentar
sfenne Skrevet 26. april 2006 Del Skrevet 26. april 2006 (endret) For de som ønsker å putte data inn i en snevrig tabell. <?php //* statisk echo '<table cellpadding=0 cellspacing=0 style="border: 1px solid #a1a1a1; padding: 5px;"> <tr bgcolor=ededed> <td><b>col1</td> <td><b>col2</td> <td><b>col3</td> </tr>'; //* dynamisk $sql=mysql_query("SELECT col1,col2,col3 FROM table WHERE clause"); while($row=mysql_fetch_assoc($sql)){ if($i++ % 2 == 0) $bgc='#ededed'; else $bgc='#FFFFFF'; echo '<tr bgcolor='.$bgc.'> <td>'.$row["col1"].'</td> <td>'.$row["col2"].'</td> <td>'.$row["col3"].'</td> </tr>'; } //* statisk echo '</table>'; Endret 26. april 2006 av sfenne Lenke til kommentar
Jonhoo Skrevet 26. april 2006 Del Skrevet 26. april 2006 (endret) Allright, jeg har laget en tøff liten scriptfunksjon her.. Du har sikkert irritert deg over rotete HTML-kode før, uten ordentlig indentering (Setting av tabs eller mellomrom etter åpningstags og vice-versa) Her er en PHP-funksjon som rydder opp i HTML-kode, uansett hvor stygg den er. Fikk ideen i går kveld, og nå er den her Koden burde være godt dokumentert, men spør gjerne hvis dere lurer PS: Dere kan se resultatet av et dokument scriptet har kjørt gjennom ved å se på source @ http://jons.moo.no <?php //Function to seperate multiple tags one line function fix_newlines_for_clean_html($fixthistext) { $fixthistext_array = explode("\n", $fixthistext); foreach ($fixthistext_array as $unfixedtextkey => $unfixedtextvalue) { //Makes sure empty lines are ignores if (!preg_match("/^(\s)*$/", $unfixedtextvalue)) { $fixedtextvalue = preg_replace("/>(\s|\t)*</U", ">\n<", $unfixedtextvalue); $fixedtext_array[$unfixedtextkey] = $fixedtextvalue; } } return implode("\n", $fixedtext_array); } function clean_html_code($uncleanhtml) { //Uses previous function to seperate tags $fixed_uncleanhtml = fix_newlines_for_clean_html($uncleanhtml); $uncleanhtml_array = explode("\n", $fixed_uncleanhtml); //Sets no indentation $indentlevel = 0; //Sets wanted indentation $indent = " "; foreach ($uncleanhtml_array as $uncleanhtml_key => $currentuncleanhtml) { //Removes all indentation $currentuncleanhtml = preg_replace("/\t+/", "", $currentuncleanhtml); $currentuncleanhtml = preg_replace("/^\s+/", "", $currentuncleanhtml); $replaceindent = ""; //Sets the indentation from current indentlevel for ($o = 0; $o < $indentlevel; $o++) { $replaceindent .= $indent; } //If self-closing tag, simply apply indent if (preg_match("/<(.+)\/>/", $currentuncleanhtml)) { $cleanhtml_array[$uncleanhtml_key] = $replaceindent.$currentuncleanhtml; } //If doctype declaration, simply apply indent else if (preg_match("/<!(.*)>/", $currentuncleanhtml)) { $cleanhtml_array[$uncleanhtml_key] = $replaceindent.$currentuncleanhtml; } //If opening AND closing tag on same line, simply apply indent else if (preg_match("/<[^\/](.*)>/", $currentuncleanhtml) && preg_match("/<\/(.*)>/", $currentuncleanhtml)) { $cleanhtml_array[$uncleanhtml_key] = $replaceindent.$currentuncleanhtml; } //If closing HTML tag or closing JavaScript clams, decrease indentation and then apply the new level else if (preg_match("/<\/(.*)>/", $currentuncleanhtml) || preg_match("/^(\s|\t)*\}{1}(\s|\t)*$/", $currentuncleanhtml)) { $indentlevel--; $replaceindent = ""; for ($o = 0; $o < $indentlevel; $o++) { $replaceindent .= $indent; } $cleanhtml_array[$uncleanhtml_key] = $replaceindent.$currentuncleanhtml; } //If opening HTML tag AND not a stand-alone tag, or opening JavaScript clams, increase indentation and then apply new level else if ((preg_match("/<[^\/](.*)>/", $currentuncleanhtml) && !preg_match("/<(link|meta|base|br|img|hr)(.*)>/", $currentuncleanhtml)) || preg_match("/^(\s|\t)*\{{1}(\s|\t)*$/", $currentuncleanhtml)) { $cleanhtml_array[$uncleanhtml_key] = $replaceindent.$currentuncleanhtml; $indentlevel++; $replaceindent = ""; for ($o = 0; $o < $indentlevel; $o++) { $replaceindent .= $indent; } } else //Else, only apply indentation {$cleanhtml_array[$uncleanhtml_key] = $replaceindent.$currentuncleanhtml;} } //Return single string seperated by newline return implode("\n", $cleanhtml_array); } ?> Funksjonen brukes ved å skrive clean_html_code(HTML-kode-som-string) Endret 27. april 2006 av Jonhoo Lenke til kommentar
Dotten Skrevet 26. april 2006 Del Skrevet 26. april 2006 *kremt* Jeg vil mine på følgende: Slettet prat og spørsmål fra tråden. Kun posting av kode og forklaringer (og eventuelle relevate lenker). Lurer du på noe starter du en ny tråd. (etter å ha søkt) 2892251[/snapback] Lenke til kommentar
genstian Skrevet 29. april 2006 Del Skrevet 29. april 2006 (endret) Ny template klasse. Klasse: //==================== // Template System (New Style) //==================== class template { var $output = ''; var $template = 'Default'; var $blocks = array(); var $tags = array(); function template($template = '') { if($template) { $this->template = $template; } } function add_html($file, $tags = array()) { $html = trim(file_get_contents(ROOT . '/templates/' . $this->template . '/' . $file . '.tpl')); $this->tags += $tags; $html = $this->compile($html); $this->output .= $html; return true; } function global_tag($tags) { $this->tags += $tags; } function compile($html) { $html = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', " <?php echo \$lang[strtolower('$1')]; ?> ", $html); // Parse namespace tags preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $html, $btags); $varcount = sizeof($btags[1]); for ($i = 0; $i < $varcount; $i++) { $namespace = $btags[1][$i]; $varname = $btags[3][$i]; $new = $this->generate_block_varref($namespace, $varname); $html = str_replace($btags[0][$i], $new, $html); } // Parse tags $html = preg_replace('#\{([a-z0-9\-_]*)\}#is', "<?php echo \$this->tags['\\1']; ?>", $html); // Fix <-- ENDIF --> $html = str_replace('<!-- ENDIF -->', ' <?php } ?> ', $html); // Fix language $html = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', "<?php echo \$lang[(strtolower(str_replace('_', ' ', '\\1')))] ?>", $html); // Breaks into lines $lines = explode("\n", $html); $nesting_level = 0; $nesting_names = array(); $nesting_names[0] = '.'; for($i=0;$i<count($lines);$i++) { // Fix <-- IF * --> if(preg_match_all('#<!-- (.*?) (.*?)?[ ]?-->(.*)#', $lines[$i], $b)) { switch($b[1][0]) { case 'IF': $lines[$i] = " <?php if ({$b[2][0]}) { ?>"; break; case 'ELSEIF': $lines[$i] = " <?php } elseif ({$b[2][0]}) { ?>"; break; case 'ELSE': $lines[$i] = " <?php } else { ?>"; break; case 'BEGIN': $nesting_level++; $nesting_names[$nesting_level] = $b[2][0]; $namespace = implode('.', $nesting_names); $namespace = substr($namespace, 2); $namespace = $this->generate_block_data_ref($namespace, false); $lines[$i] = "<?php \$i_{$b[2][0]}_count = count($namespace);\n"; $lines[$i] .= " for(\$i_{$b[2][0]}=0; \$i_{$b[2][0]} < \$i_{$b[2][0]}_count; \$i_{$b[2][0]}++) { ?>"; break; case 'END': unset($nesting_names[$nesting_level]); $nesting_level--; $lines[$i] = " <?php } ?>"; break; default: // No nothing break; } $lines[$i] .= " {$b[3][0]} \n"; } } $html = implode("\n", $lines); $html = str_replace('?><?php', '', $html); return $html; } function print_page() { global $lang; eval('?>' . $this->output); } function add_header($title, $meta = '') { $this->add_html('Header', array('TITLE' => $title, 'META' => $meta)); } function assign_block($block, $tags) { if(!isset($this->blocks[$block])) $this->blocks[$block] = array(); if(strpos($block, '.')) { // Nested block. $blocks = explode('.', $block); $blockcount = sizeof($blocks) - 1; $str = '$this->blocks'; for ($i = 0; $i < $blockcount; $i++) { $str .= '[\'' . $blocks[$i] . '\']'; eval('$lastiteration = sizeof(' . $str . ') - 1;'); $str .= '[' . $lastiteration . ']'; } // Now we add the block that we're actually assigning to. // We're adding a new iteration to this block with the given // variable assignments. $str .= '[\'' . $blocks[$blockcount] . '\'][] = $tags;'; // Now we evaluate this assignment we've built up. eval($str); } else { $this->blocks[$block][] = $tags; } } function generate_block_data_ref($blockname, $include_last_iterator) { // Get an array of the blocks involved. $blocks = explode(".", $blockname); $blockcount = sizeof($blocks) - 1; $varref = '$this->blocks'; // Build up the string with everything but the last child. for ($i = 0; $i < $blockcount; $i++) { $varref .= '[\'' . $blocks[$i] . '\'][$i_' . $blocks[$i] . ']'; } // Add the block reference for the last child. $varref .= '[\'' . $blocks[$blockcount] . '\']'; // Add the iterator for the last child if requried. if ($include_last_iterator) { $varref .= '[$i_' . $blocks[$blockcount] . ']'; } return $varref; } function generate_block_varref($namespace, $varname) { // Strip the trailing period. $namespace = substr($namespace, 0, strlen($namespace) - 1); // Get a reference to the data block for this namespace. $varref = $this->generate_block_data_ref($namespace, true); // Prepend the necessary code to stick this in an echo line. // Append the variable reference. $varref .= '[\'' . $varname . '\']'; $varref = '<?php echo '.$varref.'; ?>'; return $varref; } function add_nav() { } } ?> Eksempel: Index.php define('ROOT', './'); include("klasse.php"); $template = new template('minstil'); $template->add_header('mintitel'); $array = array('INNHOLD' => 'bla', 'BRUKER' => 'yo'); $admin = 1; $lang['logged_in_as'] = 'logget inn som'; $superadmin = 0; $template->assign_block('news', array('TITLE' => 'test', 'TEXT' => 'this is just a test news')); $template->add_html('page', $array); page.tpl: {L_LOGGED_IN_AS}: {BRUKER} <!-- IF $GLOBALS['admin'] == true --> {INNHOLD} <!-- ENDIF --> <!-- BEGIN news --> {news.TITLE}<br />{news.text}<br /> <!-- END news --> Endret 29. april 2006 av hotstian Lenke til kommentar
ilpostino Skrevet 2. mai 2006 Del Skrevet 2. mai 2006 (endret) jeg vet ikke om dette er optimalt laget, men dette scriptet bruker jeg selv på siden min å blokkere ip-adresser jeg ikke ønsker å ha på hjemmesiden mim. Dette fordi jeg har opplevd spam-lignende tilstander på gjesteboken min og fra mail-siden jeg har på hjemmesiden min. Dette scriptet importeres i begynnelsen av alle sidene på hjemmesiden min og skriver feilmelding til de som er blokkert. <?php // Emulate register_globals on if (!ini_get('register_globals')) { $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET); if (isset($_SESSION)) { array_unshift($superglobals, $_SESSION); } foreach ($superglobals as $superglobal) { extract($superglobal, EXTR_SKIP); } } //Dette stopper adresser som har sendt spam $ip_adresse = getIP(); $banned_ip = array('IP_adresser_her'); foreach ($banned_ip as $ip) { if($ip == $ip_adresse) die("<head><title>Access denied</title><link rel=\"stylesheet\" type=\"text/css\" href=\"css/hovedsider.css\"></head><body><h1>Acces denied</h1>You get this message because I have recieved alot of spam from the ip-adress you are using. Therefore I have banned your IP. You will not be possible to acces any pages on mye homepage<p>Best regards<br>Einar Herstad-Hansen"); } //Denne funksjonen sjekker ip-adressen til de som besøker siden function getIP() { $ip; if (getenv("$HTTP_CLIENT_IP")) $ip = getenv("HTTP_CLIENT_IP"); else if(getenv("HTTP_X_FORWARDED_FOR")) $ip = getenv("HTTP_X_FORWARDED_FOR"); else if(getenv("REMOTE_ADDR")) $ip = getenv("REMOTE_ADDR"); else $ip = "UNKNOWN"; return $ip; }?> edit: forenklet koden litt Endret 2. mai 2006 av ilpostino Lenke til kommentar
genstian Skrevet 2. mai 2006 Del Skrevet 2. mai 2006 (endret) WEP template 0.1.1 * Inspirasjon fra phpBB3 til compile() (Mitt system var ganske likt, men systemet mitt var basert på phpBB2 ider). -> Bug fix -> Bedre ytelse? <?php /****************************************************************************** * Screen.class.php (Class) * ******************************************************************************* * WEP: Web Extended Potal * * Open-Source Project by W4N * * =========================================================================== * * Software Version: 1.0a * * Software by: W4N (http://www.w4n.org) * ******************************************************************************* * This program is free software; you may redistribute it and/or modify it * * under the terms of GNU General Public Lisens (GPL) version 2.0 * * * * This program is distributed in the hope that it is and will be useful, * * but WITHOUT ANY WARRANTIES; without even any implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * * ******************************************************************************/ //==================== // Template System (New Style) //==================== class template { var $output = ''; var $template = 'Default'; var $blocks = array(); var $tags = array(); function template($template = '') { if($template) { $this->template = $template; } } function add_html($file, $tags = array()) { $html = trim(file_get_contents(ROOT . '/templates/' . $this->template . '/' . $file . '.tpl')); $this->tags += $tags; $html = $this->compile($html); $this->output .= $html; return true; } function global_tag($tags) { $this->tags += $tags; } function compile($html) { $html = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', " <?php echo \$lang[strtolower('$1')]; ?> ", $html); // Parse namespace tags preg_match_all('#\{((?:[a-z0-9\-_]+\.)+)(\$)?([A-Z0-9\-_]+)\}#', $html, $btags); $varcount = sizeof($btags[1]); for ($i = 0; $i < $varcount; $i++) { $namespace = $btags[1][$i]; $varname = $btags[3][$i]; $new = $this->generate_block_varref($namespace, $varname); $html = str_replace($btags[0][$i], $new, $html); } // Parse tags $html = preg_replace('#\{([a-z0-9\-_]*)\}#is', "<?php echo \$this->tags['\\1']; ?>", $html); // Fix <-- ENDIF --> $html = str_replace('<!-- ENDIF -->', ' <?php } ?> ', $html); // Fix language $html = preg_replace('#\{L_([a-z0-9\-_]*)\}#is', "<?php echo \$lang[(strtolower(str_replace('_', ' ', '\\1')))] ?>", $html); preg_match_all('#<!-- (.*?) (.*?)?[ ]?-->#', $html, $b); $text_blocks = preg_split('#<!-- (.*?) (.*?)?[ ]?-->(.*)#', $html); /* echo '<pre>'; print_r($b); print_r($text_blocks); echo '</pre>';*/ // Breaks into lines $nesting_level = 0; $nesting_names = array(); $nesting_names[0] = '.'; for($i=0;$i<sizeof($text_blocks);$i++) { if (!isset($b[1][$i])) { $b[1][$i] = ''; } switch($b[1][$i]) { case 'IF': $compile[] = "<?php if ({$b[2][$i]}) { ?>"; break; case 'ELSEIF': $compile[] = "<?php } elseif ({$b[2][$i]}) { ?>"; break; case 'ELSE': $compile[] = "<?php } else { ?>"; break; case 'BEGIN': $nesting_level++; $nesting_names[$nesting_level] = $b[2][$i]; $namespace = implode('.', $nesting_names); $namespace = substr($namespace, 2); $namespace = $this->generate_block_data_ref($namespace, false); $compile[] = "<?php \$i_{$b[2][$i]}_count = count($namespace);for(\$i_{$b[2][$i]}=0; \$i_{$b[2][$i]} < \$i_{$b[2][$i]}_count; \$i_{$b[2][$i]}++) { ?>"; break; case 'END': unset($nesting_names[$nesting_level]); $nesting_level--; $compile[] = "<?php } ?>"; break; default: // No nothing break; } } $output = ''; for ($i = 0; $i < sizeof($text_blocks); $i++) { $trim_text = trim($text_blocks[$i]); $output .= ((!empty($trim_text)) ? $trim_text : '') . ((!empty($compile[$i])) ? $compile[$i] : ''); } $output = str_replace(' ?><?php ', '', $output); return $output; } function print_page() { global $lang; eval('?>' . $this->output); } function add_header($title, $meta = '') { $this->add_html('Header', array('TITLE' => $title, 'META' => $meta)); } function assign_block($block, $tags) { if(!isset($this->blocks[$block])) $this->blocks[$block] = array(); if(strpos($block, '.')) { // Nested block. $blocks = explode('.', $block); $blockcount = sizeof($blocks) - 1; $str = '$this->blocks'; for ($i = 0; $i < $blockcount; $i++) { $str .= '[\'' . $blocks[$i] . '\']'; eval('$lastiteration = sizeof(' . $str . ') - 1;'); $str .= '[' . $lastiteration . ']'; } // Now we add the block that we're actually assigning to. // We're adding a new iteration to this block with the given // variable assignments. $str .= '[\'' . $blocks[$blockcount] . '\'][] = $tags;'; // Now we evaluate this assignment we've built up. eval($str); } else { $this->blocks[$block][] = $tags; } } function generate_block_data_ref($blockname, $include_last_iterator) { // Get an array of the blocks involved. $blocks = explode(".", $blockname); $blockcount = sizeof($blocks) - 1; $varref = '$this->blocks'; // Build up the string with everything but the last child. for ($i = 0; $i < $blockcount; $i++) { $varref .= '[\'' . $blocks[$i] . '\'][$i_' . $blocks[$i] . ']'; } // Add the block reference for the last child. $varref .= '[\'' . $blocks[$blockcount] . '\']'; // Add the iterator for the last child if requried. if ($include_last_iterator) { $varref .= '[$i_' . $blocks[$blockcount] . ']'; } return $varref; } function generate_block_varref($namespace, $varname) { // Strip the trailing period. $namespace = substr($namespace, 0, -1); // Get a reference to the data block for this namespace. $varref = $this->generate_block_data_ref($namespace, true); // Prepend the necessary code to stick this in an echo line. // Append the variable reference. $varref .= '[\'' . $varname . '\']'; $varref = '<?php echo '.$varref.'; ?>'; return $varref; } function add_nav() { } } ?> EDIT: Glemte å poste koden Endret 2. mai 2006 av hotstian Lenke til kommentar
hockey500 Skrevet 2. mai 2006 Del Skrevet 2. mai 2006 (endret) vet ikke helt hvor nyttig den er, men jeg bruker den hvertfall selv litt. Det er en funksjon som printer ut en tabell fra en MySQL database på en oversiktlig måte, med kolonnetitler, og uansett hvor mange kolonner det er i tabellen. Koden er ikke helt optimal, kanskje jeg får litt slakt for den Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php function mysql_print_table($db, $tabell, $OrderBy) { if(empty($db) || empty($tabell)) die("Fyll ut alle funksjonsparametere"); //Koble til databasen $connection = mysql_connect('*******','*******','*******'); $db = mysql_select_db($db, $connection); //Kjør spørringer if(!empty($OrderBy)) $sql1 = "SELECT * FROM `".$tabell."` ORDER BY ".$OrderBy.""; else $sql1 = "SELECT * FROM `".$tabell."`"; $sql2 = "desc `".$tabell."`"; $result1 = mysql_query($sql1, $connection) or die(mysql_error()); $result2 = mysql_query($sql2, $connection) or die(mysql_error()); // Nødvendig variabel for annenhver bakgrunnsfarge pr. rad $tall = 1; //noen CSS-strenger $PrintTableFunction = "border-top:1px solid black; border-left:1px solid black;"; $PrintTableFunctionTrHeader = "background-color:#82a9bc;"; $PrintTableFunctionTh = "padding:2px 15px; border-right:1px solid black; border-bottom:1px solid black;"; $PrintTableFunctionTd = "padding:2px 15px; border-bottom:1px solid black; border-right:1px solid black;"; $PrintTableFunctionTdWeight = "border-bottom:1px solid black; border-right:1px solid black; padding:2px 15px;"; $PrintTableFunctionThWeight = "border-right:1px solid black; border-bottom:1px solid black; padding:2px 15px;"; //Start printing av tabellen echo '<table border="0" style="'.$PrintTableFunction.'" cellpadding="0" cellspacing="0">'."\n"; echo "\t".'<tr style="'.$PrintTableFunctionTrHeader.'">'."\n"; while($col = mysql_fetch_row($result2)) { echo "\t\t".'<th style="'.$PrintTableFunctionTh.'">'.$col[0].'</th>'."\n"; $i++; } //while echo "\t".'</tr>'."\n"; while($rad = mysql_fetch_array($result1)) { $color = ($tall % 2 == 0) ? "#e5eaed" : "#FFFFFF"; echo "\t".'<tr style="'.$PrintTableFunctionTrBody.'" bgcolor="'.$color.'">'."\n"; for($j = 0; $j < $i; $j++) { echo "\t\t".'<td style="'.$PrintTableFunctionTd.'">'."\n"; echo "\t\t $rad[$j] \n"; echo "\t\t".'</td>'."\n"; } // for echo "\t".'</tr>'."\n"; $tall++; } // while echo '</table>'."\n"; } // slutt på funksjon ?> og kaller opp funksjonen slik: mysql_print_table('database','tabell','SorterTabellEtter'); Og så en liten besøksteller, som flere har posta før meg. Den teller antall unike besøkende og antall besøkende i dag. Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php //Denne delen i toppen av dokumentet $array = file('teller/ip.txt'); if(!in_array($_SERVER['REMOTE_ADDR'] . "*-*" . date(GdmY) . "\n", $array)) { $filref = fopen('teller/teller.txt', 'r'); $tallet = fgets($filref); $tallet++; fclose($filref); $filref = fopen('teller/teller.txt','w'); fwrite($filref, $tallet); fclose($filref); $filref = fopen('teller/ip.txt','a'); fwrite($filref, $_SERVER['REMOTE_ADDR'] . "*-*" . date(GdmY) . "\n"); fclose($filref); } ?> <html> <head> <title>Test</title> </head> <body> <!-- Denne delen der du vil ha telleren --> <h2>Besøksstatistikk</h2> <?php echo "<b>Besøksteller:</b> " . file_get_contents('teller/teller.txt')." treff"; echo "<br />"; $cont = file('teller/ip.txt'); $count = 0; foreach($cont as $linje) { $current_date = strrev(date(dmY)); $ip_rev = substr(strrev($linje), 0, 9); if($current_date == $ip_rev) $count++; } echo "<b>Treff i dag: </b>" .$count." treff"; ?> </body> </html> Til denne trenger du 2 filer i mappen "teller": ip.txt og teller.txt. Så et lite script som printer ut innholdet i en mappe rekursivt:Skjult tekst: (Marker innholdet i feltet for å se teksten): <?php function getDir($dir, $level = 0) { $opendir = opendir($dir); $ignore = array('.','..','Thumbs.db'); while(false !== ($file = readdir($opendir))) { if(!in_array($file, $ignore)) { $path = $dir.'/'.$file; $indent = str_repeat(' ', $level); if(!is_dir($path)) { echo $indent . $file . "<br />"; } if(is_dir($path)) { echo "$indent<strong>$file</strong> <br />"; getDir( $path, ($level + 5) ); } } } closedir($opendir); } ?> Kaller opp metoden med getDir($mappe [, int padding-left]) Endret 16. mai 2006 av hockey500 Lenke til kommentar
bosannes Skrevet 6. mai 2006 Del Skrevet 6. mai 2006 (endret) Liten greie jeg bruker til å lage menyer med css image replacement hover: <?php $meny = array(side1, side2, side3); foreach ($meny as $link) { echo "<li><a href=\"?side=".$link."\" style=\"background-image: url(images/meny/".$link.".png);"; if (($side == $link) or (((empty($side)) and ($link == side1)))) { echo " background-position: -160px 0;"; } echo "\"></a></li>\n"; } ?> Så lenge bildene ligger klare er det bare å skrive inn nye sider i $meny Endret 6. mai 2006 av bosannes Lenke til kommentar
trondes Skrevet 8. mai 2006 Del Skrevet 8. mai 2006 (endret) Her er en liten ting som jeg har brukt med noen anledninger, sjekking av person nr. Dette vil ikke sjekke om individ nummerne er rett i forhold til fødsels året. Da de kan komme til å forandre på systmet igjen og da vil ikke denne sjekkingen virke. function check_person_nr( $person_nr, $kjonn = false){ // sjekker et person nummer // tar ikke hensyn til om individ nummeret stemmer med årstall // $kjonn kan være "mann" eller "kvinne" // spørsmål ? tronds på lostdot -dot- com if(strlen($person_nr) != 11) return false; $dag = substr($person_nr, 0, 2); $mnd = substr($person_nr, 2, 2); $aar = substr($person_nr, 4, 2); $P = $person_nr; // for å gjøre dette litt enklere if($kjonn) if(bc_is_even($P[8]) AND strtolower($kjonn) == "mann") return false; elseif(!bc_is_even($P[8]) AND strtolower($kjonn) == "kvinne") return false; if($aar <= date("y")) $aar = "20".$aar; else $aar = "19".$aar; if(!checkdate($mnd, $dag, $aar)) return false; // beynner å sjekke kontroll siffer. $V = (3*$P[0])+(7*$P[1])+(6*$P[2])+($P[3])+(8*$P[4])+(9*$P[5])+(4*$P[6])+(5*$P[7])+(2*$P[8]); $V2 = (5*$P[0])+(4*$P[1])+(3*$P[2])+(2*$P[3])+(7*$P[4])+(6*$P[5])+(5*$P[6])+(4*$P[7])+(3*$P[8])+(2*$P[9]); if($V != 0) $V = (11-fmod($V,11)); if($V2 != 0) $V2 = (11-fmod($V2,11)); if($V == 11) $V = 0; if($V2 == 11) $V2 = 0; if($V == $P[9] AND $V2 == $P[10]) return true; else return false; } EDIT: hvis ikke noe kjønn er oppgitt vil det ikke bli gjennom først noen test av dette Endret 8. mai 2006 av trondes Lenke til kommentar
alp_renx Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 En funksjon jeg lagde da jeg var lei av å skrive br br br (linjeskift) function br() { if(func_num_args() == 1) { $antall = func_get_arg(0); if(is_int($antall)) { for ($i=0; $i<$antall; $i++) { print "<br />"; } } else { print "<br />"; } } else { print "<br />"; } } print "Hei"; br(); print "Dette er linje 2"; br(3); print "Dette er 3 linjer ned"; Lenke til kommentar
genstian Skrevet 1. juni 2006 Del Skrevet 1. juni 2006 Min br() function br($a = 1) { $i = 0; while($i == $a) { echo '<br />'; $i++; } } Lenke til kommentar
CruellaDeVille Skrevet 3. juni 2006 Del Skrevet 3. juni 2006 (endret) Jeg har ikke postet i denne tråden før, men her er iallfall noe jeg har arbeidet med en liten stund. Jeg liker php5 og har jobbet med et epostskript hvor en bruker kan sende epost med eller uten vedlegg. Skriptet skriver til fil når epost har sendt (mest en sjekk for at jeg ikke blir misbrukt), kunne sikkert gjort det på andre måter. Gi meg gjerne kommentarer, og epostskriptet er frigitt under "gjør hva pokker du vil med det"-lisensen. Filene finnes på http://nibbler.no/files/OOEmail/ og kan sees på http://cruella.lostdot.com/Email3/ [edit] Php5 Endret 3. juni 2006 av CruellaDeVille Lenke til kommentar
peace2 Skrevet 7. juni 2006 Del Skrevet 7. juni 2006 (endret) Jeg har ikke postet i denne tråden før, men her er iallfall noe jeg har arbeidet med en liten stund. Jeg liker php5 og har jobbet med et epostskript hvor en bruker kan sende epost med eller uten vedlegg. Skriptet skriver til fil når epost har sendt (mest en sjekk for at jeg ikke blir misbrukt), kunne sikkert gjort det på andre måter. Gi meg gjerne kommentarer, og epostskriptet er frigitt under "gjør hva pokker du vil med det"-lisensen. Filene finnes på http://nibbler.no/files/OOEmail/ og kan sees på http://cruella.lostdot.com/Email3/ [edit] Php5 6237040[/snapback] Det funka ikke hos meg .. når jeg trykker på "Send" kommer jeg til en blank side .. (jeg har lagt inn e-post adressen min på ini filen ja.. ) Edit: er ikke sikker på om hosten min støtter det siden du nevnte PHP5 .. Endret 7. juni 2006 av xox Lenke til kommentar
CruellaDeVille Skrevet 7. juni 2006 Del Skrevet 7. juni 2006 Jeg har ikke postet i denne tråden før, men her er iallfall noe jeg har arbeidet med en liten stund. Jeg liker php5 og har jobbet med et epostskript hvor en bruker kan sende epost med eller uten vedlegg. Skriptet skriver til fil når epost har sendt (mest en sjekk for at jeg ikke blir misbrukt), kunne sikkert gjort det på andre måter. Gi meg gjerne kommentarer, og epostskriptet er frigitt under "gjør hva pokker du vil med det"-lisensen. Filene finnes på http://nibbler.no/files/OOEmail/ og kan sees på http://cruella.lostdot.com/Email3/ [edit] Php5 6237040[/snapback] Det funka ikke hos meg .. når jeg trykker på "Send" kommer jeg til en blank side .. (jeg har lagt inn e-post adressen min på ini filen ja.. ) Edit: er ikke sikker på om hosten min støtter det siden du nevnte PHP5 .. 6262636[/snapback] Merkelig. Det funker, og jeg har fått epost hos en fra lostdot.com. Men forsøk å endre i ini.php, der hvor det står error_reporting, 0 ... endre 0 til 1. Så ser du hva som er galt Alternativt kjør en phpinfo() på serveren din. Lenke til kommentar
endrebjo Skrevet 15. juni 2006 Del Skrevet 15. juni 2006 Jeg vet ikke om noen har laget det før, men jeg greide ihvertfall å sette sammen et skript som tegner en kalender for en gitt måned. http://home.no.net/endrebjo/prove/date/calendar.php (kildekoden er også der) Koden ser ut som dritt. Hvis noen har lyst til å rydde opp i den, har vedkommende min velsignelse. Lenke til kommentar
hockey500 Skrevet 20. juni 2006 Del Skrevet 20. juni 2006 ved å se på koden til hotstian har jeg vanskelig for å se for meg at den koden vil virke. Men hvorfor gjøre det vanskelig? <?php function br($x = 1) { echo str_repeat('<br />', $x); } ?> Selv om koden til hotstian hadde virket vil denne fortsatt være mer optimal tror jeg Lenke til kommentar
groenlid Skrevet 23. juni 2006 Del Skrevet 23. juni 2006 (endret) KILDEKODESKRIPT: HÅPER DET KOMMER TIL NYTTE <?php $dir = $_GET['dir']; if(!isset($dir) or ($dir == "")) { $dir = "./"; } function listmappe($dir){ if($handle = opendir($dir)) { while (false !== ($file = readdir($handle))) { if(is_dir($file) and $file != "." and $file != ".." and $file != "gfx") { echo "<h7><a href=?s=kildekode&dir=$file>$file</a></h7><br>"; } else if($file != "." and $file != ".." and $file !="gfx" and $file !="kildekode.php" and $file != "Thumbs.db") { echo "<h7><a href=?s=kildekode&dir=$dir&fil=$file>$file</a></h7><br>"; } } } closedir($handle); } function kildekode ($dir, $file) { $file = $_GET['fil']; if($file != "kildekode.php" and $file != "config.php") { echo "<br><br> <b>Viser kildekode til <u>$file</b></u><br>"; show_source("$dir/$file"); } } listmappe($dir); if(isset($_GET['fil'])) { kildekode($dir,$file); } ?> Er litt rar fordi den er bare en liten del av et stort projekt. Endret 23. juni 2006 av groenlid Lenke til kommentar
Rabbid Skrevet 28. juni 2006 Del Skrevet 28. juni 2006 (endret) Har i det siste holdt på med template-motoren "myML". Det følger med en liten "manual" for å hjelpe deg i bruken med myML og den viser den hvordan man lager templates... Skrev manualen på svært kort tid, så det kan hende jeg har glemt noe. NB: Glemte outsiders-funksjonen i manualen.. funksjonen fikser alle "variabler" som er utenfor objektene (du skjønner hvis du leser litt i manualen min) Koden er ikke godt kommentert, men forhåpentligvis så ryddig at du skjønner hva som skjer. Hvis det er noe du ikke skjønner: Legg meg på MSN (eller send meg en PM/Epost) Håper noen liker denne svært tidlige betaen.. myML01b.zip Endret 28. juni 2006 av -XaHc- 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å