Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

PHP kode som andre kanskje kan bruke


Anbefalte innlegg

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
  • 2 måneder senere...
Videoannonse
Annonse

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

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 av sfenne
Lenke til kommentar

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 :p

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 av Jonhoo
Lenke til kommentar

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 av hotstian
Lenke til kommentar

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 av ilpostino
Lenke til kommentar

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 :blush:

Endret av hotstian
Lenke til kommentar

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 :p

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 av hockey500
Lenke til kommentar

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 av bosannes
Lenke til kommentar

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 av trondes
Lenke til kommentar
  • 4 uker senere...

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

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 av CruellaDeVille
Lenke til kommentar
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 av xox
Lenke til kommentar
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

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

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 av groenlid
Lenke til kommentar

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 av -XaHc-
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...