Gå til innhold

PHP kode som andre kanskje kan bruke


Anbefalte innlegg

En teller er vel kanskje noe av det mest populære på hjemmesider, så her kommer det en (den bruker cookies og en enkel flatfil):

Teller maks ett besøk i døgnet.

 

I toppen av dokumentet, før all HTML (sender header/cookie):

$logfile="/counter.log";
$counted=$_COOKIE["counted"];
if(!$counted) setcookie("counted",1,time()+86400);

 

Og der du vil ha telleren (kommer i ren tekst):

$num=file_get_contents($logfile);
if(!$counted){
$fp=fopen($logfile,"w") or die("Kunne ikke åpne loggfil!");
$num++;
fwrite($fp,$num);
fclose($fp);
}
echo($num);

 

Så lager du en fil som heter counter.log og chmodder den til 646.. Du kan forandre variabelen $logfile til en annen fil, gjør samme nytta. :thumbup:

Endret av lokaltog
Lenke til kommentar
Videoannonse
Annonse

Stilskifte-script:

 

Bruker denne på hjemmesiden min, kanskje litt klønete, men det går da.. Har ikke ork eller tid til å lage en ny versjon når den her funker som den skal.. Denne stilskifteren bruker en <form> for å sende variabler.

 

Steg 1:

Legg til disse linjene heeelt øverst i "index.php":

<?php
$skjema = $_POST['skjema'];
require('fargeskjema.php');
?>

 

Steg 2:

Lag et dokument som du kaller "fargeskjema.php". I fargeskjema.php limer du inn

<?php
$standard = "original";

if($_COOKIE['farge'] && empty($skjema)) {
$farge = $_COOKIE['farge'];
}
elseif(!empty($skjema)) {
$trans = array("Æ" => "ae", "æ" => "ae", "Ø" => "o", "ø" => "o", "Å" => "a", "å" => "a", "/" => "-");
$scheme = strtolower(strtr($skjema,$trans));
setcookie("farge",$scheme,time()+14400000);
$farge = $scheme;
}
else {
setcookie("farge",$standard,time()+14400000);
$farge = $standard;
}
?>

Standardtemaet er definert i variabelen $standard, forandre dette til det stilarket du vil bruke som standard.

 

Steg 3:

I index.php, legg til denne linja i <head>:

<link rel="stylesheet" type="text/css" href="css/<?php echo($farge) ?>.css" media="screen" />

 

Steg 4:

Enda en gang i index.php, der du vil ha knappene for å skifte stil:

<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>" id="fargevalg">
Farger/temaer:
<input type="submit" name="skjema" value="Original" />
<input type="submit" name="skjema" value="Blå/grå" />
<input type="submit" name="skjema" value="Elegant" />
</form>

 

Steg 5:

Lag dine CSS-dokumenter i en mappe som heter css, og kall dem det samme som verdien på knappene. I tillegg må du ta hensyn til følgende i filnavnene på .css-dokumentene:

"Æ" => "ae"

"æ" => "ae"

"Ø" => "o"

"ø" => "o"

"Å" => "a"

"å" => "a"

"/" => "-"

For eksempel, navnet på css'en til temaet Blå/Grå blir "/css/bla-gra.css", og temaet BlÅbÆrsyltetØY blir "/css/blabaersyltetoy.css".

 

 

Mulig denne ble litt vrien å forstå, men den er ikke konstruert for at andre enn meg skal forstå den :D

 

Lykke til, om noen finner den nyttig! :thumbup:

Lenke til kommentar

Stilark-skifter v2

 

Features:

* Setter opp alternative stilark for Opera/Mozilla-brukere.

* Bruker cookies for å lagre stilvalg.

 

Steg 1

Helt på toppen i dokumentet som skal skifte stil, plasser følgende:

<?php
$skjema = $_POST['skjema'];
$styles = array(
"Original" => "original",
"Blå/Grå" => "bla-gra",
"Elegant" => "elegant",
"Future [Ikke IE]" => "future"
);
if($_COOKIE['farge'] && empty($skjema)) {
$farge = $_COOKIE['farge'];
}
elseif(!empty($skjema)) {
$scheme = $styles[$skjema];
setcookie("farge",$scheme,time()+14400000);
$farge = $scheme;
}
else {
setcookie("farge","original",time()+14400000);
$farge = "original";
}
?>

I denne kodebiten styres navnene og titlene på stilene. Under linjen "$styles = array(", finner du filnavnene og titlene i formen "Tittel" => "Filnavn". Skriv filnavnene uten .css, og legg css-dokumentene i en mappe som heter /css.

 

Steg 2:

I <head>-seksjonen i det samme dokumentet, legg til:

<link rel="stylesheet" type="text/css" href="css/<?php echo($farge) ?>.css" media="screen" />
<?php
foreach($styles as $name => $style) {
echo('<link rel="alternate stylesheet" type="text/css" href="css/'.$style.'.css" title="'.$name.'" media="screen" />
');
}
?>

 

Steg 3:

Der du vil ha knappene som skifter:

<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>" id="fargevalg">
Farger/temaer:
<?php
foreach($styles as $name => $style) {
echo('<input type="submit" name="skjema" value="'.htmlentities($name).'" />
');
}
?>
</form>

Endret av lokaltog
Lenke til kommentar
Nå skal jeg gi mitt første lille bidrag her og :)

Har sett en del tråder hvor folk spør om hvordan man får index.php?side=nyheter f.eks. Har alltid hatt lyst til det selv og, og har endelig funnet en god løsning.

Det som også er kjekt er at du alltid holder deg i / på serveren, så includes blir mye enklere å holde styr på og :)

Here we go:

<?php
if (!$_GET['side']) {
include('moduler/nyheter.php');
} else {
include ("moduler/".$_GET['side'].".php");
}
?>

moduler/ her er navnet på mappen filene ligger i, og ['side'] er det som utgjør ?side=nyheter , og .php viser til at det er php filer som skal inkluderes :)

Er det ikke dette Switch ($side) gjør da?

Eller har jeg lest noe feil?

 

Edit: Siden ingen har lagt den ut her kan jo jeg gjøre det. Dette er vel ingen tutorial-tråd men det er sikkert mange nybegynnere, som meg, som leter etter sånne enkle ting også?

 

Link: <A href="index.php?side=bilder">Bilder</A>

 

PHP der filen skal inkluderes:

<?php
   Switch ($side)
   {
   case 'start':
   include ("start.php");
   break;
   
   case 'bilder':
   include("bilder.php");
   break;

default:
include("start.php");
break;
}
?>

Dette forklarer vel seg selv.

Endret av svamp
Lenke til kommentar

En ny versjon av sideskifter-scriptet til LoS:

* Godtar ikke sider som ikke eksisterer.

* Sender ikke eventuelle feilmeldinger.

 

<?php

$side = $_GET['id'];
$file_format = 'sider/'.$side.'.php';
if(!isset($side) || !is_file($file_format)) {
@include('sider/index.php');
} else {
@include($file_format);
}

?>

 

Edit:

* Sidene som skal inkluderes legges i en mappe som heter "sider"

* Filendelse på alle dokumentene: .php

* Sidene hentes fram med f.eks. <a href="index.php?id=hovedsiden">Til hovedsiden</a>

Endret av lokaltog
Lenke til kommentar

svamp: helt rett, men med det jeg skrev så slipper man å skrive alle alternativene.

 

Har skrevet en litt mer "avansert" en nå, for å kalle det det.

Denne:

<?php
 if (!isset($_GET['side'])) {
 	include('site/hovedside.php');
 } elseif (isset($_GET['side']) AND file_exists("site/".$_GET['side'].".php")) {
 	include ("site/".$_GET['side'].".php");
 } else {
 	include ("site/404.php");
 }
?>

Dekker omtrent det meste.

 

kan ikke fatte at folk skal skrive @ foran tinga her, folk som leser her, er som regel ikke så ille flinke med php, og hvis scriptet brått ikke funker, så får de ingen feilmelding.

Lenke til kommentar

Flott da.

<?php
$path="/home/brukernavn/htdocs/site";
if (!isset($_GET['side'])) {
 include('site/hovedside.php');
} elseif (isset($_GET['side']) AND file_exists("$path/".$_GET["side"].".php")) {
 include ("$path/".$_GET["side"].".php");
} else {
 include ("site/404.php");
}
?>

nå?

Endret av LoS
Lenke til kommentar
Flott da.

<?php
$path="/home/brukernavn/htdocs/site";
if (!isset($_GET['side'])) {
 include('site/hovedside.php');
} elseif (isset($_GET['side']) AND file_exists("$path/".$_GET["side"].".php")) {
 include ("$path/".$_GET["side"].".php");
} else {
 include ("site/404.php");
}
?>

nå?

For include vil jeg mene at dette er den beste metoden jeg har sett (ps: ikke jeg som har skrevet det og jeg har ikke tid til å oversette kommentarer nå):

 

* multiple inclusions are supported

* index.php?love does not work unless you use a single inclusion

* you can acccess sub dirs without using the dir variable EX:

index.php?page=/aboutme/photos/photo1.html (might not be 100% secure)

<?php
error_reporting(E_ALL ^ E_NOTICE);
$basepath = '/apache2/htdocs/dynamic2/';

function fixpath($file) {
  $file = preg_replace('/\.{2,}/', '', $file);
  return $file;
}

function dynamic($inc_dir='', $inc_ext='', $var_name='', $default_page, $error_msg='') {
  global $basepath;
  if (!empty($_POST[$var_name])) {
      $var = fixpath($_POST[$var_name]);
  } elseif (!empty($_GET[$var_name])) {
      $var = fixpath($_GET[$var_name]);
//}elseif (!empty($_SERVER['QUERY_STRING'])) {
//  $var = fixpath($_SERVER['QUERY_STRING']);
  } else {
      $var = $default_page;
  }

  $file = $inc_dir.$var.$inc_ext;
  // echo "<h2>$file</h2>";

  if (file_exists($file)) {
      if (!include_once($file)) {
          echo $error_msg;
      }
  } else {
      echo $error_msg;
  }
}
?>

 

INCLUSION

I put all the code into functions so that multiple inclusions would be supported.

dynamic([includes_dir], [includes_ext], [var_name], [default_page], [error_msg]);

Example Page:

<?php include_once('dynamic.php'); ?>
<html>
<head>
<title>Test Page</title>
</head>

<body>

<div id="news">
<?php dynamic('news/', '.html', 'id', 'index', 'File does not exist!'); ?>
</div>

<div id="content">
<?php dynamic('files/', '.html', 'page', 'welcome', 'File does not exist!'); ?>
</div>

</body>
</html>

 

godt mulig jeg har postet det her før en eller annen gang, men følte det hadde relevanse nå...

Lenke til kommentar

Det scriptet jeg har er kanskje litt buggy, men det har det alltid vært isåfall, så kan ikke fatte hvorfor det skal komme opp akkurat nå.

Kan jo også fikse noe sånt som dette isteden da.

<?php
$path="/home/brukernavn/htdocs/site";
if (!isset($_GET['side'])) {
include('site/hovedside.php');
} elseif (isset($_GET['side']) AND file_exists("$path/".str_replace("../", "", $_GET["side"]).".php")) {
include ("$path/".str_replace("../", "", $_GET["side"]).".php");
} else {
include ("site/404.php");
}
?>

Da vil jo php bare gi blaffen i ../ som skrives i url'n

Endret av LoS
Lenke til kommentar
  • 1 måned senere...
Steg 3:

Der du vil ha knappene som skifter:

<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>" id="fargevalg">
Farger/temaer:
<?php
foreach($styles as $name => $style) {
echo('<input type="submit" name="skjema" value="'.htmlentities($name).'" />
');
}
?>
</form>

Den bør endres til

 

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] . "?" . $_SERVER['QUERY_STRING']; ?>" id="fargevalg">
Farger/temaer:
<?php
foreach($styles as $name => $style) {
echo('<input type="submit" name="skjema" value="'.htmlentities($name).'" />
');
}
?>
</form>

 

For å støtte sider med dynamisk include og/eller variabler i adresselinjen.

Endret av jorgis
Lenke til kommentar
  • 3 uker senere...

Date er jo en egen funksjon, som kan "tweakes" etter hvordan du vil den skal printes ut.

 

Feks

<?php echo date("l \\t\h\e jS"); ?> 

vil skrive ut noe som det her: Wednesday the 15th

Der er manualen en fin plass å lete, med en tabell over alle mulighetene.

Lenke til kommentar
Savner enklere ting som feks. script som viser brukerens tid/dato, eller script som viser hvor mange brukere som besøker siden for øyeblikket... kunne noen tatt seg tid til å skrive noen enkle scripts? Kan ikke være store greiene etter det dere har laget her fra før  :roll:

Av erfaring er det nettopp sånne script som gjør at en besøkende snur ryggen til siden din med en gang. :yes:

 

 

...men hvis du likevel har behov for å loggføre antall brukere på siden din til enhver tid, kan du ta en titt på PHP-manualen om sessions og cookies.

Lenke til kommentar
  • 2 uker senere...
Steg 3:

Der du vil ha knappene som skifter:

<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>" id="fargevalg">
Farger/temaer:
<?php
foreach($styles as $name => $style) {
echo('<input type="submit" name="skjema" value="'.htmlentities($name).'" />
');
}
?>
</form>

Den bør endres til

 

<form method="post" action="<?php echo $_SERVER['PHP_SELF'] . "?" . $_SERVER['QUERY_STRING']; ?>" id="fargevalg">
Farger/temaer:
<?php
foreach($styles as $name => $style) {
echo('<input type="submit" name="skjema" value="'.htmlentities($name).'" />
');
}
?>
</form>

 

For å støtte sider med dynamisk include og/eller variabler i adresselinjen.

<form method="post" action="<?php echo $_SERVER['REQUEST_URI']; ?>" id="fargevalg">
Farger/temaer:<br />
<?php
foreach($styles as $name => $style) {
echo('<input type="submit" name="skjema" value="'.htmlentities($name).'" />
');
}
?>
</form>

 

modd av lokaltogs stilskiftescript som gjør den kompatibel med modrewrite.

 

laget med litt hjelp fra jorgis

Lenke til kommentar

Her er en kode du kan bruke for å legge ut på websiden de siste aktive trådene på ditt Invision Power Board forum.

 

<? 
$conn = mysql_connect("localhost", "BRUKERNAVN", "PASSORD"); 
mysql_select_db("DATABASE", $conn) or die(mysql_error()); 

$query = mysql_query("SELECT last_poster_name, last_poster_id, title, tid, forum_id, last_post FROM ippbe_topics ORDER BY last_post DESC LIMIT 0, 5"); 

// 0 teller som nyeste post. 5 sier at kun de 5 siste trådene skal vises. 
// Disse kan endres fritt
     
while($lp = mysql_fetch_array($query)) 
{ 
        
echo "<div align=left> 
<a href=/forum/index.php?showtopic=$lp[tid]&view=getnewpost target=_blank>$lp[title]</a> by <a href=/forum/index.php?showuser=$lp[last_poster_id] target=_blank>$lp[last_poster_name]</a></div>"; 
} 
     
?>

 

Ikke glem å fyll ut brukernavn/passord osv.

 

Denne koden skal fungere på IPB 2.0, men jeg har kun testet med IPB 1.3.

 

Edit: Endret litt på teksten.

Endret av Jan Åge
Lenke til kommentar

Mitt include script, man trenger ikke angi noen parametere til funksjonen, det er valgfritt. Det beste lager man sjøl :)

<?php
function inclusion($dir = './', $suffix = '.php', $defaultside = 'hovedsida' , $includeparameter = 'i')
{



$dir; //hvilken mappe å leite etter filer på server
$suffix; //tillatt fil endelse
$defaultside; // deafultside hvis $_GET[$includeparameter] er tom
$includeparameter; //include med hvilket element fra $_GET? default sidami.suffix?i=include_side_uten_endelse

$ex = array('.', '..'); //filer som skal strippes \ viktig /

if (is_dir($dir) && $dh = opendir($dir)) 
{ 
 
while (($file = readdir($dh))) 
{ 

 if(is_file($file) && (!in_array($file, $ex)))
 {

 	$allowed_files[] = $file;


 }
     
}
 
} 
  closedir($dh); 




$include = $_GET[$includeparameter];
$include = str_replace(array('..', '//', 'ftp'), array('', '', ''), $include);
$include = strtolower($include);

if(in_array($include . $suffix, $allowed_files))
{

include($include . $suffix);

}
else
{

if($_GET[$includeparameter]) {


 if($_SERVER['HTTP_REFERER'])
 {

 echo '<div>øhh, det virker som om linken du trykte på, ikke virka. En mail har blitt sendt til Admin. Feilen vil bli retta så fort som mulig.</div>';

 }
 else
 {

 echo 'Sorry, sida du skreiv inn finnes ikke. Gå tilbake til <a href="http://' . $_SERVER['HTTP_HOST'] . '">hovedsida</a>';

 }

}
 else
{

include($defaultside . $suffix);


}


}


}//end function

inclusion('./');
?>

Lenke til kommentar

Et par funksjoner for å kunne få ut tiden det tok å parse scriptet på server:

function StartTimer($id) {
global $idarray;
$idarray[$id][StartTimeArray] = explode(' ', microtime());
}

function StopTimer($id) {
global $idarray;
$idarray[$id][StopTimeArray] = explode(' ', microtime());
}

function CalculateAndDraw($id, $text = "") {
global $idarray;

$idarray[$id][seconds] = round($idarray[$id][StopTimeArray][1]-$idarray[$id][StartTimeArray][1]);
$idarray[$id][microseconds] = $idarray[$id][StopTimeArray][0]-$idarray[$id][StartTimeArray][0];

$idarray[$id][s] = $idarray[$id][seconds]+$idarray[$id][microseconds];
$idarray[$id][arrayz] = explode('.',$idarray[$id][s]);
 
echo $text.$idarray[$id][arrayz][0].'s '.substr(round($idarray[$id][arrayz][1]/1000), 0, 3)."ms";
}

/* Eksempel
StartTimer('1'); <- Ved start
StopTimer('1'); <- Ved slutt
CalcAndDraw('1', "Execution time: "); <- Skriv så ut

Output: 'Execution time: 0s 7ms'
*/

 

Et par funksjoner for å kunne få ut uptime i Windowsversjoner som støtter "net statistics" og i Linux, på formen "adays bhrs cmins dsecs":

function uptime_win() {
exec("net statistics server", $array);
$string = $array['3'];
$string = str_replace('Statistics since ', '', $string);
$timestamp = strtotime($string);
$timestamp = time() - $timestamp;
$days = floor($timestamp / (60*60*24));
$timestamp = $timestamp % (60*60*24);
$hrs = floor($timestamp / (60*60));
$timestamp = $timestamp % (60*60);
$mins = floor($timestamp / 60);
$secs = $timestamp % (60);
return "{$days}days {$hrs}hrs {$mins}mins {$secs}secs<br>";
}

function uptime_linux() {
$uptimearray = explode(' ', shell_exec('cat /proc/uptime'));
$timestamp = $uptimearray[0];
$days = floor($timestamp / (60*60*24));
$timestamp = $timestamp % (60*60*24);
$hrs = floor($timestamp / (60*60));
$timestamp = $timestamp % (60*60);
$mins = floor($timestamp / 60);
$secs = $timestamp % (60);
return "{$days}days {$hrs}hrs {$mins}mins {$secs}secs<br>";
}

 

Et par loggefunksjoner som forklarer seg selv:

function log_ips_with_time_and_date($file) {
$handle = fopen("$file", 'a+t');
$string = date("d.m.y, H:i:s", time())." - $_SERVER[REMOTE_ADDR]\r\n";
fwrite($handle, $string);
fclose($handle);
}

function log_unique_ips($file) {
$visitedfile = file($file);
$unique = array_unique($visitedfile);

if (!in_array("$_SERVER[REMOTE_ADDR]\r\n", $unique)) {
 $handle = fopen($file, 'a+t');
 $string = "$_SERVER[REMOTE_ADDR]\r\n";
 fwrite($handle, $string);
 fclose($handle);
}
}

 

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

Med vennlig hilsen,

T. Alexander Lystad

[email protected]

Lenke til kommentar
  • 2 uker senere...

En fin java funksjon jeg fant på nett,modifiserte til php og la til litt. :)

Printer ut et bilde med navn 1-12, og tekst tilhørende bilde med navnet på stjernetegnet.

$zodiac = getZodiac($day,$month);
print '
<b>Stjernetegn:</b> <img src="images/zodiac/'.$zodiac[0].'.gif" alt="'.$zodiac[1].'" height="11">
';

function getZodiac($_day,$_month){
 switch ($_month)
 {
  case "1":
 if($_day >=21) { $_sign = array("1","Vannmannen"); }
 else{ $_sign = array("12","Steinbukken"); }
break;
  case "2":
 if($_day <= 19){ $_sign = array("1","Vannmannen"); }
 else{ $_sign = array("2","Fiskene"); }
break;
  case "3":
 if($_day <= 20){ $_sign = array("2","Fiskene"); }
 else{ $_sign = array("3","Væren"); }
break;
  case "4":
 if($_day <= 20){ $_sign = array("3","Væren"); }
 else{ $_sign = array("4","Tyren"); }
break;
  case "5":
 if($_day <= 21){ $_sign = array("4","Tyren"); }
 else{ $_sign = array("5","Tvillingene"); }
break;
  case "6":
 if($_day <= 22){ $_sign = array("5","Tvillingene"); }
 else{ $_sign = array("6","Krepsen"); }
break;
  case "7":
 if($_day <= 23){ $_sign = array("6","Krepsen"); }
 else{ $_sign = array("7","Løven"); }
break;
  case "8":
 if($_day <= 22){ $_sign = array("7","Løven"); }
 else{ $_sign = array("8","Jomfruen"); }
break;
  case "9":
 if($_day <= 22){ $_sign = array("8","Jomfruen"); }
 else{ $_sign = array("9","Vekten"); }
break;
  case "10":
 if($_day <= 22){ $_sign = array("9","Vekten"); }
 else{ $_sign = array("10","Skorpionen"); }
break;
  case "11":
 if($_day <= 21){ $_sign = array("10","Skorpionen"); }
 else{ $_sign = array("11","Skytten"); }
break;
  case "12":
 if($_day <= 21){ $_sign = array("11","Skytten"); }
 else{ $_sign = array("12","Steinbukken"); }
}
return $_sign;
}

Endret av need4sms
Lenke til kommentar
  • 3 uker senere...

Et enkelt grunnlag for bruk av str_replace() funksjonen.

 

 

<?

$string = "For hver komma, kommer det en ny li, slik som disse tre ";
$stringen = str_replace(",", "</li> \n <li>", $string);

print "<ul> \n\r <li>";
print $stringen;
print "</li> \n\r</ul>";

?>

 

Gir følgende "output" :

 


<ul>
<li>For hver komma</li>
<li>kommer det en ny li</li>
<li>slik som disse tre </li>
</ul>

 

 

Kanskje ikke det mest avanserte, men er til hjelp for de som nettop har startet med php, slik som meg.

Endret av robgar
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...