Lokaltog Skrevet 30. mai 2004 Del Skrevet 30. mai 2004 (endret) 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. Endret 30. mai 2004 av lokaltog Lenke til kommentar
Lokaltog Skrevet 4. juni 2004 Del Skrevet 4. juni 2004 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 Lykke til, om noen finner den nyttig! Lenke til kommentar
Lokaltog Skrevet 4. juni 2004 Del Skrevet 4. juni 2004 (endret) 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 4. juni 2004 av lokaltog Lenke til kommentar
svamp Skrevet 4. juni 2004 Del Skrevet 4. juni 2004 (endret) 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 4. juni 2004 av svamp Lenke til kommentar
Lokaltog Skrevet 4. juni 2004 Del Skrevet 4. juni 2004 (endret) 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 4. juni 2004 av lokaltog Lenke til kommentar
LoS Skrevet 5. juni 2004 Del Skrevet 5. juni 2004 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
LoS Skrevet 7. juni 2004 Del Skrevet 7. juni 2004 (endret) 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 7. juni 2004 av LoS Lenke til kommentar
magikern Skrevet 7. juni 2004 Del Skrevet 7. juni 2004 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
LoS Skrevet 7. juni 2004 Del Skrevet 7. juni 2004 (endret) 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 7. juni 2004 av LoS Lenke til kommentar
jorgis Skrevet 19. juli 2004 Del Skrevet 19. juli 2004 (endret) 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 19. juli 2004 av jorgis Lenke til kommentar
Lemkin Skrevet 4. august 2004 Del Skrevet 4. august 2004 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
jorgis Skrevet 7. august 2004 Del Skrevet 7. august 2004 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 Av erfaring er det nettopp sånne script som gjør at en besøkende snur ryggen til siden din med en gang. ...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
gather Skrevet 21. august 2004 Del Skrevet 21. august 2004 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
Gjest Slettet+6132 Skrevet 21. august 2004 Del Skrevet 21. august 2004 (endret) Koden var dårlig og usikker og har blitt fjernet av meg selv. Endret 26. desember 2006 av Slettet+6132 Lenke til kommentar
Jan Åge Skrevet 24. august 2004 Del Skrevet 24. august 2004 (endret) 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 25. august 2004 av Jan Åge Lenke til kommentar
dabear Skrevet 24. august 2004 Del Skrevet 24. august 2004 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
arex Skrevet 25. august 2004 Del Skrevet 25. august 2004 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
Inge_P Skrevet 7. september 2004 Del Skrevet 7. september 2004 (endret) 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 7. september 2004 av need4sms Lenke til kommentar
phun-ky Skrevet 9. september 2004 Del Skrevet 9. september 2004 laget et lite sign in script, det eneste du trenger å gjøre er å lage en login form og ha en tabell. sign in script Lenke til kommentar
robgar Skrevet 29. september 2004 Del Skrevet 29. september 2004 (endret) 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 29. september 2004 av robgar 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å