Gå til innhold

PHP kode som andre kanskje kan bruke


Anbefalte innlegg

Har også laget en php fil som kan banne brukere på den siden.

 

<?php
$ipad = $_SERVER['REMOTE_ADDR'];
if (($ipad == "10.0.0.1"))
 die("Du har ikke adgang");
elseif (($ipad == "10.0.0.2"))
 die("Du har ikke adgang");
?>

Der hvor det står 10.0.0.1 / 10.0.0.2 kan du fylle ut med en annen ip adresse, skal du ha flere ip'er legger du til

elseif (($ipad == "ip"))

  die("Du har ikke adgang");

 

Funker helt fint.. :D

7417641[/snapback]

 

Jeg prøver meg på en litt annen metode;

 

PHP

<?php

$badIps = array(

'10.0.0.2',

'10.0.0.3',

'10.0.0.4',

);

 

if(in_array($_SERVER['REMOTE_ADDR'], $badIps)) {

die('No access');

}

?>

 

Man kan også opprette en fil: badip.txt som man legger alle ipadressene i, en på hver linje og bruke:

PHP

<?php

$badIps file('badip.txt');

 

if(in_array($_SERVER['REMOTE_ADDR'], $badIps)) {

die('No access');

}

?>

Lenke til kommentar
Videoannonse
Annonse

Et tellerscript:

 

teller treff på hver side, kun et treff pr ip pr døgn.

 

<?php
//************ Teller Script           versjon 0.1  ****************/
//****************************************************/
//****************************************************/
//********  Skrevet av: André Harila  ****************/
//********  [email protected]  ****************/
//********      	****************/
//********  Kan brukes fritt, men ikke	****************/
//********  videreselges eller brukes  ****************/
//********  i kommersiell virksomhet.  ****************/
//********      	****************/
//****************************************************/                                                
//
//  Krever:    Php og Mysql
//
//
//  Hvordan bruke:
//  
//  Lim inn koden på siden du vil ha statsen.
//  endre konfigurasjonen under.
//  Voilla, du er ferdig :)
//
//  For å endre utskriften som komme på siden kan du endre det nederste på denne siden
//
//
//*** KONFIGURSJON ***/
//
$mysqlHost  = 'localhost';	//Din mySql Server Adresse, eks Localhost
$mysqlUser  = 'root';	// Ditt mySql Brukernavn
$mysqlPass  = 'pass';	// Ditt mySql Passord
$mysqlDB	= 'database';	// Din mySql Database
//
//*** SLUTT ***/
//
// IKKE ENDRE NOE UNDER HER, MED MINDRE DU VET HVA DU GJØR!
//*****************************************************/
//





//Definere konstanter, ut fra konfigurasjonen på toppen
define("mysqlHost", $mysqlHost);
define("mysqlUserName", $mysqlUser);
define("mysqlPass", $mysqlPass);
define("mysqlDB", $mysqlDB);

/******** FUNKSJONER **********

Her er det samlet sammen funksjonene som brukes i scriptet

******************************/

// mysqlConnect, ingen paramenter, settes øverst i filen for å åpne en mysql tilkobling
function mysqlConnect()
{
$mysqlLink = mysql_connect(mysqlHost, mysqlUserName, mysqlPass);
 if(!$mysqlLink)
 {
die("<h1>Feil</h1>Det skjedde en feil ved tilkoblingen til mySQL serveren<br>" . mysql_errno() . ": " . mysql_error() );
 }
}

// mysqlQuery, to paramenter spørringen, deretter valgfri Database hvis du vil bruke en annen enn den som er lagt inn i konfigurasjonen.
function mysqlQuery($query, $db = mysqlDB)
{
   $mysqlDB = mysql_select_db($db);
   if(!$mysqlDB)
{
 die("<h1>Feil</h1>Kunne ikke koble til databasen<br>" . mysql_errno() . ": " . mysql_error()  );
   }
   $mysqlQuery = mysql_query($query);
   if(!$mysqlQuery)
{
 die("<h1>Feil</h1>Det var en feil med spørringen<br>" . mysql_errno() . ": " . mysql_error() );
   }
return $mysqlQuery;
}
/********** FUNKSJONER, SLUTT *************/

//Åpner mysql Tilkobling
mysqlConnect();
//Diverse config
$dato = date('Y-m-d');
$IPInDB = false;
$TableInDB = false;

$mysqlTabell = "sidevisninger";
$mysqlFeltAntall = "antall";
$mysqlFeltSide = "side";
$mysqlFeltIP = "IP";
$mysqlFeltDate = "date";

//Sjekker om tabellen finnes i databasen, finnes den ikke blir den opprettet
$query = "	Show tables from
 	$mysqlDB
 	";
$result = mysqlQuery($query);
while($row = mysql_fetch_array($result)){
if($row[0] == $mysqlTabell)
{
 $TableInDB = true;
 break;
}
}
if(!$TableInDB)
{
$sql = " CREATE TABLE
 	`$mysqlTabell` (
 	`$mysqlFeltDate` DATE NOT NULL ,
 	`$mysqlFeltAntall` INT NOT NULL ,
 	`$mysqlFeltSide` TEXT NOT NULL,
 	`$mysqlFeltIP` TEXT NOT NULL
 	)
 	";
mysqlQuery($sql);
}
// Sjekker om datoen finnes i databasen for denne siden
$query = "Select * from $mysqlTabell WHERE $mysqlFeltDate='$dato' AND $mysqlFeltSide='{$_SERVER['PHP_SELF']}'";
$result = mysqlQuery($query);
$row = mysql_fetch_array($result);
$IPFromDB = $row[3];
$VisningToday = $row[1];
$DateInDB = mysql_num_rows($result);
//Hvis datoen ikke er lagt inn i databasen, legg den inn
if($DateInDB == 0)
{
$query = "	insert into $mysqlTabell
 	($mysqlFeltDate, $mysqlFeltAntall, $mysqlFeltSide)
 	VALUES
 	('$dato', '0', '{$_SERVER['PHP_SELF']}')
 	";
mysqlQuery($query);
}
//Legger alle ip'ene for i dag i et array
$AllIPArray = explode("***", $IPFromDB);
// Sjekke om ip'en er regisrert i dag
foreach($AllIPArray as $key => $TempIP){
if($TempIP == $_SERVER['REMOTE_ADDR']){
$IPInDB = true;
break;
}
}
//hvis ip'en ikke er regisrert i dag legges den inn
if($IPInDB != true)
{
//print_r($AllIPArray);
$VisningToday++;

$InsertIP .= $IPFromDB;
//$InsertIP = str_replace("Array", "", $InsertIP);
echo $InsertIP;
$InsertIP .= $_SERVER['REMOTE_ADDR'] . "***";

$query = "	update $mysqlTabell
   set $mysqlFeltAntall = '$VisningToday', $mysqlFeltIP = '$InsertIP' 
   where $mysqlFeltDate = '$dato' AND $mysqlFeltSide='{$_SERVER['PHP_SELF']}'
   ";
mysqlQuery($query);
}

// Hente ut alle treff på denne siden
$query = "	SELECT $mysqlFeltAntall
 	FROM $mysqlTabell
 	WHERE $mysqlFeltSide ='{$_SERVER['PHP_SELF']}'
 	";
$result = mysqlQuery($query);
while($row = mysql_fetch_array($result))
{
$VisningTotalt = $row[0] + $VisningTotalt;
}
// Hente ut treff denne mnd denne siden
$datomndstart = date("Y") . "-" . (date("m")) . "-" . 01;
$datomndslutt = date("Y") . "-" . (date("m")) . "-" . 31;
$query = "	SELECT $mysqlFeltAntall
 	FROM $mysqlTabell
 	WHERE $mysqlFeltDate > '$datomndstart'
 	AND
 	$mysqlFeltDate < '$datomndslutt'
 	AND
 	$mysqlFeltSide='{$_SERVER['PHP_SELF']}'
 	";
$result = mysqlQuery($query);
while($row = mysql_fetch_array($result))
{
$VisningMonth = $row[0] + $VisningMonth;
}
$datouke = date('Y-m-d', strtotime('-7 days'));
// Hente ut treff denne uken denne siden
$query = "	SELECT $mysqlFeltAntall
 	FROM $mysqlTabell
 	WHERE $mysqlFeltDate > '$datouke'
 	AND
 	$mysqlFeltSide='{$_SERVER['PHP_SELF']}'
 	";
$result = mysqlQuery($query);
while($row = mysql_fetch_array($result))
{
$VisningWeek = $row[0] + $VisningWeek;
}


// Her er utskriften
// Dette kan endres hvis ønskelig


echo "<p><b>Antall Treff</b></p>
<p>Totalt: " . $VisningTotalt."<br>
Denne mnd: " . $VisningMonth."<br>
Denne uken: " . $VisningWeek."<br>
I dag: " . $VisningToday."</p>
";


?>

Lenke til kommentar
  • 3 uker senere...
class dblayer {
[...]
function insertarray($insertarray, $table) {

/* Makes a INSERT string from an array containing
   $key=>$value pairs.
*/

 $fields=array_keys($insertarray);
 $insert="insert into $table (";

 foreach($fields as $field) {
  $insert.=$field.", ";
  $values.="'".$insertarray[$field]."', ";
 }

 // remove trailing commas..
 $insert=substr($insert, 0, -2);
 $values=substr($values, 0, -2);

 // put it together
 $insert.=") values(".$values.")";

 return $insert;
}

[...]

?>

Vet det er en gammel tråd, men har en liten endring å komme med (hvis det er lov i denne tråden?)

Funksjonen insertarray() kan gjøres adskillig kortere, feks slik

function insertarray($insertarray, $table) {
/* Makes a INSERT string from an array containing
   $key=>$value pairs.
*/
 $keys = implode(', ', array_keys($insertarray));
 $values = implode(", ", $insertarray);
 return "insert into $table ($keys) values ($values)";
}

 

En annen funksjon som er ganske fantastisk er arraymap (userfunc, array) og php.nets funksjon for smart quoting av data for mysql.

 

<?php
// Array, kunne vært $_POST eller hva som helst egentlig
$array = array('navn'=>'siv', 'epost'=>'<a href="">[email protected]</a>', 'favorittdrikk'=>'kaffe');
// stripper tags fra hele arrayet
$array = array_map('strip_tags', $array);
// Quoter strenger, looper gjennom hele arrayet, uten å bruke foreach!
// E'kke det fantastisk?!
$array = quote_smart($array);
print insertarray($array, 'mytable');
// skriver ut insert into mytable (navn, epost, favorittdrikk) values ('siv', '[email protected]', 'kaffe')

function insertarray($insertarray, $table) {
/* Makes a INSERT string from an array containing
   $key=>$value pairs.
*/
 $keys = implode(', ', array_keys($insertarray));
 $values = implode(", ", $insertarray);
 return "insert into $table ($keys) values ($values)";
}

function quote_smart($value){ // fra php.net
if(is_array($value)){
 return array_map('quote_smart', $value);
}
if(get_magic_quotes_gpc()){
 $value = stripslashes($value);
}
if(!is_numeric($value)){
 $value = "'" . mysql_real_escape_string($value) . "'";
}
return $value;
}
?>

Lenke til kommentar

en veldig enkel rss feed parset med php

PHP

<?php

error_reporting(E_PARSE);

header('Content-Type: application/xml; charset=iso-8859-1');

echo ' <?xml version="1.0" encoding="iso-8859-1"?>

<rss version="2.0"

 xmlns:dc="http://purl.org/dc/elements/1.1/"

 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"

 xmlns:content="http://purl.org/rss/1.0/modules/content/">

';

 

//inkluderer databasefilen og kobler til databasen  

/*her inkluderer jeg min kobling, men tok den vekk av sikkerhetsmessige hensyn*/

 

require("config.inc.php");

if (class_exists('VisitorHandler')){

$viHandler = new VisitorHandler();

}

 $viHandler->addVisit($_SERVER["REMOTE_ADDR"],

 $_SERVER["HTTP_REFERER"], 

 $_SERVER["HTTP_USER_AGENT"]);

 

$result mysql_query("SELECT * FROM bloggPost ORDER BY postID DESC LIMIT 0,20");

 

while ($row mysql_fetch_array($result)){

$file 'images/blog/'.$row['postImgLargeUrl'];

$fileS filesize($file);

$dateMod explode(" "$row['dateCreated']);

$dateS explode("-"$dateMod[0]);

$postT stripslashes($row['postText']);

$postT strip_tags($postT);

$resources .= <<<end

<item>

 <title>{$row['postTitle']}</title>

 <link>http://phun-ky.net/{$dateS[0]}/{$dateS[1]}/{$row['postSlug']}</link>

 <description>{$postT}</description>

 <dc:date>{$row['W3CDTF']}</dc:date>

 <guid>

http://phun-ky.net/{$dateS[0]}/{$dateS[1]}/{$row['postSlug']}#

</guid>

 <enclosure url="http://phun-ky.net/images/blog/{$row['postImgLargeUrl']}

length="{$fileS}" type="image/*"></enclosure>

</item>

end;

$list .= <<<end

<rdf:li resource="http://phun-ky.net/blog.rss"/>

end;

}

 

echo <<<end

<channel>

<title>oh the horror... </title>

<link>http://phun-ky.net/</link>

<description>

the world from my point of view, and some pendantic creativity

</description>

<language>en-Us</language>

<copyright>Copyright © 2007, Alexander Røyne</copyright>

<webMaster>[email protected]</webMaster>

 

$resources

end;

 

echo '

</channel>

</rss>';

 

?>

Endret av phun-ky
Lenke til kommentar
  • 2 uker senere...

RSS: PHP som henter ut fra database:

<?
//Vi lager et nytt objekt
$obj = new db();
//Så kaller vi opp funksjonene våre
$obj->koble_til();
$obj->skrivut();
$obj->steng_db();


//Lager en klasse
class db{

var $hostname = "localhost";
var $username = "brukernavn";
var $password = "passord";
var $usertable = "tabell";
var $dbName = "database_navn";
var $result;

function koble_til(){

mysql_connect($this->hostname,$this->username,$this->password) || die(mysql_error());
@mysql_select_db($this->dbName)  || die("Unable to select database");
}

function query($query){
$data = array();
$this->result = mysql_query($query);
if(mysql_num_rows($this->result) != 0){
while($d = mysql_fetch_object($this->result)){
 $data[] = $d;
}
return $data;
}
return null;
}
function skrivut(){
$result = $this->query("SELECT * FROM $this->usertable ORDER BY id DESC");
if (!is_null($result)){
$now = date('d.m-Y@H:i:s', time());
$rss = <<<RSS
<rss version="2.0">
 <channel>\n
 <title>En Tittel</title>
 <description>En beskrivelse av RSS feedsene</description>
 <lastBuildDate>$now</lastBuildDate>
 <link>http://link-til-din-side.no<link>
RSS;
    foreach($result as $r){
     $date = date('d/m/Y@H:i:s', $r->timestamp);
      $rss .=<<<RSS
           <item>
   <title>$r->tittel</title>
   <pubDate>$r->dato</pubDate> 
   <description>$r->innhold</description>
   <link>http://enside.no/nyheter.php?id=$r->id</link>
  </item>
RSS;
}
$rss .="</channel></rss>";
header('Content-type:text/xml');
print $rss;
}
}

function steng_db(){
mysql_free_result($this->result);

mysql_close();
}
}
?>

 

 

Gjør om til mysql_fetch_array i stedet for hvis dere vil, men jeg orka ikke det nå ;)

Lenke til kommentar
  • 3 uker senere...

Dette er et script for en enkel notatbok

 

1) Først lager du en PHP fil som heter notisbok.php og inneholder dette scriptet:

 

Klikk for å se/fjerne innholdet nedenfor
<form action="lagret.php" method="post">

<br>Notat:<br>

<TEXTAREA NAME="meld" COLS="50" ROWS="5"></TEXTAREA><br>

<br>

<input type="submit" value="Legg til notat">

 

<?php

if (($_lagret["navn"] == "" )

&& ($_lagret["meld"] == "" ))

echo "";

?>

 

d

 

<br>

<?php

include("gjester.txt");

?>

<br>

 

 

2) Så lager du en ny PHP fil som heter"lagret.php" og inneholder scriptet:

 

Klikk for å se/fjerne innholdet nedenfor
<?php

if (($_POST["navn"] == "" )

&& ($_POST["meld"] == "" ))

die("<a href=\"gjestebok.php\">Fyll ut</a>");

else

$navn = $_POST["navn"];

$melding = $_POST["meld"];

$dato = date("F j, Y");

$tid = date("G.i.s");

$d = date("D");

$ip = $_SERVER['REMOTE_ADDR'];

$tekst="{$melding}";

$file = fopen('./lagret.txt', 'a', 1);

fwrite($file, $tekst);

fclose($file);

{

echo "Din notat er lagret";

;

}

?>

 

Så legger du dette i samme mappe.

 

Den siste PHP fila lager en .TXT fil som inneholder det du skreiv.

 

NB: Vis du skal lagre flere notiser så må du trykke enter inne i tekstboxen før du begynner å skrive. Vis du ikke gjør det så vil bare den du lagret begynne rett etter den første som du skreiv uten mellomrom eller noen ting. Så husk enter før du begynner å skrive.

Dette er et gjestebok script som er kopiert og redigert.

 

 

Håper dere får nytte av dette!

 

edit: Dette er mitt første script som jeg redigerer så det er sikkert ikke helt optimalt!

 

 

 

Sempron ;)

Endret av Sempron
Lenke til kommentar
  • 2 uker senere...

Gratulasjonsmelding på bursdag

 

 

date_default_timezone_set('GTM+0100');
$date = date ("dm");
$birtharray = Array
(
    "Navn 1" => "0101",	
    "Navn 2" => "0712",
    "Navn 3" => "0307",
    "Navn n" => "0103",
);

foreach($birtharray as $name => $birthdate)
{
    if($birthdate == $date)
         {
         echo " Gratulerer med dagen $name ";
         }
}

 

Denne legger ut en gratulasjonsmelding på siden.

Navnet på personen skrives i arrayen og indeksen settes som fødselsdatoen til personen i formatet "ddmm", dvs 3 Januar blir "0301"

Endret av Zyrex_
Lenke til kommentar

diverse kode jeg har skrevet i forbindelse med å hjelpe folk på forumet.

 

Viser bilder i en bane med knapper for å slette eller flytte filer:

Klikk for å se/fjerne innholdet nedenfor
<?php
$thisdir = 'uploads';
$storage = ''; #bane hvor filen skal lagres


if($_POST['copy'] || $_POST['del'])
{
$image = $_POST['image'];
if($_POST['copy'])
{
if(rename($thisdir.'/'.$image, $storage.'/'.$image))
{
 echo('Image stored!');
} else {
 echo('Error: Could not store file.');
}
} elseif ($_POST['del'])
{
unlink($thisdir.'/'.$image);
echo('Image deleted!');
} else {
die('huh?');
}
} else {
$dirhandle = opendir($thisdir);
while($thing = readdir($dirhandle))
{
if(is_file($thisdir.'/'.$thing))
{
 echo '
<form action=\'\' method=\'post\'>
<input type=\'hidden\' name=\'image\' value=\''.$thing.'\'>
<img src=\''.$thisdir.'/'.$thing.'\' alt=\''.$thisdir.'/'.$thing.'\' />
<input type=\'submit\' name=\'copy\' value=\'allow\' />
<input type=\'submit\' name=\'del\' value=\'delete\' /><br />
</form>
';
}
}
}

 

parseTags(tag, inputstring); returnerer et array med tags og attributter. Det er noen feil i regexp patterns men funker de fleste tilfellene.

Klikk for å se/fjerne innholdet nedenfor
<?php

function parseTags($input, $tagName = 'img')
{
$getTagsPattern = '/<'.$tagName.' ([a-z]{2,10}=[\'|"]([a-zA-Z\\/.><:;# 0-9_-]*)[\'|"] *)*\/?>/';
$getSettingsPattern = '/([a-zA-Z]{2,10})=[\'|"]([^"|\']*)[\'|"]/';

preg_match_all($getTagsPattern,$input,$gotTags);

foreach($gotTags[0] as $keyOne => $tags)
{
  preg_match_all($getSettingsPattern,$tags,$gotSettings);

  $settings = $gotSettings[1];
  $values = $gotSettings[2];
  
  foreach($settings as $keyTwo => $setting)
  {
    $imgTagsFoo[$setting] = $values[$keyTwo];
  }

  $imgTags[$keyOne] = $imgTagsFoo;
  unset($imgTagsFoo);
}

return($imgTags);
}

$inputString = 'aslkdfjals<img src="files/Image/profiler/2007/100/andre_dahl_klippet.jpg" border="1" alt="" width="100" height="98" align="left" />kdjf<img src="asda.asd" style="border: 1px solid #000;" alt="asdadasdadadsad" />askd<input type="balla" name="navnballa">alsk<img src="123" alt="as d">asdaskj';

print_r(parseTags($inputString));
print_r(parseTags($inputString,'input'));

?>

 

Skriver ut de 5 neste som har bursdag i form av en tabell ut i fra en csv fil.

Klikk for å se/fjerne innholdet nedenfor
kalender.csv:

"Bjørn","120379"
"Harald","070184"
"Hanne","270591"
"Kåre","080981"
"Ståle","121289"
"Stålea","161289"
"Ståleb","111289"
"Ståled","121289"
"Stålec","131289"
"Stålee","140489"

kalender.php:

<html>
<body>
<?php

$months = array('','jan','feb','mar','apr','mai','jun','jul','aug','sep','okt','nov','des');

if(!$kalenderfil = fopen('kalender.csv','r')) die('Finner ikke fil kalender.csv');

while($csvarray = fgetcsv($kalenderfil))
{
$kalender[$csvarray[0]] = $csvarray[1];
$sortering[$csvarray[0]] = substr($csvarray[1],2,2).substr($csvarray[1],0,2);
}

asort($sortering);
$dagsdato = date('md');

echo('<table id=\'kalender\'>');

$i = 0;
foreach($sortering as $navn => $dato)
{
if ($dato >= $dagsdato)
{
  echo('<tr><td>'.$navn.'<td>'.substr($kalender[$navn],0,2).'. '.$months[(int)substr($kalender[$navn],2,2)].'<td>');
  if ($dato == $dagsdato) echo('Gratulerer med dagen!');
  echo('</tr>');
  $i += 1;
}
if ($i == 5) break;
}

echo('</table>');
?>
</body>
</html>

 

Påloggingsskjema som sender epost (kanskje/utestet)

Klikk for å se/fjerne innholdet nedenfor
<?php

$epost      = ''; #din epost adresse


$inputs = array(
         array('Navn', '20'), array('Etternavn', '20'), array('Alder', '3'), array('Adresse', '60'),
         array('Telefonnummer', '12'), array('Mobilnummer', '12'), array('E-post adresse', '50')
         );


if($_POST['submit_skjema'])
{
 $mail = '';
 foreach($inputs as $input)
 {
   $mail = $mail + $input[0] = $_POST[$input[0]]."/n";
 }
 $mail = str_replace("/n.", "/n..", $mail);
 $mail = wordwrap($mail, 70);
 mail($epost,'Skjema fra hjemmesiden',$mail);
 echo('Skjema sendt!');
} else {
 echo('<table><form action="" method="post">');
 foreach($inputs as $input)
 {
   echo('<tr><td>'.$input[0].'<td><input type="textbox" name="'.$input[0].'" value="" size="'.$input[1].'"><br>');
 }
 echo('<input type="submit" name="submit_skjema" value="Send"></form>');
}

?>

 

Enkelt upload script hvor du kan velge destinasjon ut i fra mapper i banen.

Klikk for å se/fjerne innholdet nedenfor
<html>
<body>
<?php

if(!$filesavelocation = $_GET['filesavelocation']) $filesavelocation = htmlentities($_SERVER['DOCUMENT_ROOT']);

function showdirstruct($dirname)
{
 global $filesavelocation;
 if(!$dirhandle = opendir($dirname)) die('no such dir.');
 while($fileordir = readdir($dirhandle))
 {
   if(is_dir($filesavelocation.'/'.$fileordir) && substr($fileordir,0,1) != '.')
   {
     echo('<option value="'.$fileordir.'">'.$fileordir.'</option>');
#      echo('<a href="'.$_SERVER['PHP_SELF'].'?filesavelocation='.$filesavelocation.'/'.$fileordir.'">'.$fileordir.'</a><br>');
     #showdirstruct($fileordir);
#    } elseif(substr($fileordir,0,1) != '.') {
#      echo($fileordir.'<br>');
   }
 }
}

if($_POST['submit_file']) {
 $filesavelocation = $_POST['file_save_location'];
 if(!$localfilename = ($_FILES['userfile']['tmp_name'])) die('Something went wrong!');
 if(!$filename = ($_FILES['userfile']['name'])) die('Something went wrong_!');
 if(!move_uploaded_file($localfilename,$filesavelocation.'/'.$filename)) die('fil ikke flyttet'.$localfilename.' '.$filesavelocation.' '.$filename);
 echo('File uploaded successfully.');
} else {
 echo '
<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="150000">
';
#<input type="hidden" name="file_save_location" value="'.$filesavelocation.'">
echo '
<input type="file" name="userfile">
<select name="file_save_location">
';
showdirstruct($filesavelocation.'/');
echo '
</select>
<input type="submit" name="submit_file" value="Last opp fil">
</form>
';
}
#echo('<br>Du befinner deg i '.$filesavelocation.'!');
#echo('<br><a href="'.$_SERVER['PHP_SELF'].'?filesavelocation=">Tilbake</a>');
?>
</body>
</html>

Lenke til kommentar
Enkelt upload script hvor du kan velge destinasjon ut i fra mapper i banen.

Klikk for å se/fjerne innholdet nedenfor
<html>
<body>
<?php

if(!$filesavelocation = $_GET['filesavelocation']) $filesavelocation = htmlentities($_SERVER['DOCUMENT_ROOT']);

function showdirstruct($dirname)
{
 global $filesavelocation;
 if(!$dirhandle = opendir($dirname)) die('no such dir.');
 while($fileordir = readdir($dirhandle))
 {
   if(is_dir($filesavelocation.'/'.$fileordir) && substr($fileordir,0,1) != '.')
   {
     echo('<option value="'.$fileordir.'">'.$fileordir.'</option>');
#      echo('<a href="'.$_SERVER['PHP_SELF'].'?filesavelocation='.$filesavelocation.'/'.$fileordir.'">'.$fileordir.'</a><br>');
     #showdirstruct($fileordir);
#    } elseif(substr($fileordir,0,1) != '.') {
#      echo($fileordir.'<br>');
   }
 }
}

if($_POST['submit_file']) {
 $filesavelocation = $_POST['file_save_location'];
 if(!$localfilename = ($_FILES['userfile']['tmp_name'])) die('Something went wrong!');
 if(!$filename = ($_FILES['userfile']['name'])) die('Something went wrong_!');
 if(!move_uploaded_file($localfilename,$filesavelocation.'/'.$filename)) die('fil ikke flyttet'.$localfilename.' '.$filesavelocation.' '.$filename);
 echo('File uploaded successfully.');
} else {
 echo '
<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="150000">
';
#<input type="hidden" name="file_save_location" value="'.$filesavelocation.'">
echo '
<input type="file" name="userfile">
<select name="file_save_location">
';
showdirstruct($filesavelocation.'/');
echo '
</select>
<input type="submit" name="submit_file" value="Last opp fil">
</form>
';
}
#echo('<br>Du befinner deg i '.$filesavelocation.'!');
#echo('<br><a href="'.$_SERVER['PHP_SELF'].'?filesavelocation=">Tilbake</a>');
?>
</body>
</html>

8435291[/snapback]

 

mulig å gjøre dette scriptet enklere som at man bare kan lasta opp hva som helst til en spess mappe?

Lenke til kommentar

<html>
<body>
<?php

$filesavelocation = ''; #bane hvor filene skal legges.

if(!$filesavelocation) $filesavelocation = htmlentities($_SERVER['DOCUMENT_ROOT']);

if($_POST['submit_file']) {
 if(!$localfilename = ($_FILES['userfile']['tmp_name'])) die('Something went wrong!');
 if(!$filename = ($_FILES['userfile']['name'])) die('Something went wrong_!');
 if(!move_uploaded_file($localfilename,$filesavelocation.'/'.$filename)) die('fil ikke flyttet'.$localfilename.' '.$filesavelocation.' '.$filename);
 echo('File uploaded successfully.');
} else {
 echo '
<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="150000">
';
echo '
<input type="file" name="userfile">
<input type="submit" name="submit_file" value="Last opp fil">
</form>
';
}
?>
</body>
</html>

 

noe slikt. (utestet)

Lenke til kommentar
<html>
<body>
<?php

$filesavelocation = ''; #bane hvor filene skal legges.

if(!$filesavelocation) $filesavelocation = htmlentities($_SERVER['DOCUMENT_ROOT']);

if($_POST['submit_file']) {
 if(!$localfilename = ($_FILES['userfile']['tmp_name'])) die('Something went wrong!');
 if(!$filename = ($_FILES['userfile']['name'])) die('Something went wrong_!');
 if(!move_uploaded_file($localfilename,$filesavelocation.'/'.$filename)) die('fil ikke flyttet'.$localfilename.' '.$filesavelocation.' '.$filename);
 echo('File uploaded successfully.');
} else {
 echo '
<form enctype="multipart/form-data" action="'.$_SERVER['PHP_SELF'].'" method="POST">
<input type="hidden" name="MAX_FILE_SIZE" value="150000">
';
echo '
<input type="file" name="userfile">
<input type="submit" name="submit_file" value="Last opp fil">
</form>
';
}
?>
</body>
</html>

 

noe slikt. (utestet)

8444151[/snapback]

 

Hei ! jeg prøvde den med Easy php , fikk følgende:

Notice: Undefined index: submit_file in c:\easyphp1-8\www\old_sibbiphp\testing.php on line 36
Endret av xox
Lenke til kommentar

Hei ! jeg prøvde den med Easy php , fikk følgende:

Notice: Undefined index: submit_file in c:\easyphp1-8\www\old_sibbiphp\testing.php on line 36

8457505[/snapback]

 

Denne feilen fikk du fordi den første if blokka skjekker om $_POST['submit_file'] == true. Og siden du ikkje har trykt på submit knappen så er ikkje indexen submit_file satt enda. Du kan bli kvitt meldingen ved å endre

 

PHP

<?php

if($_POST['submit_file']) {

?>

 

til

 

PHP

<?php

if(isset($_POST['submit_file'])) {

?>

Lenke til kommentar

jeg holder på å kode en session håndtering som benytter challenge - response. Med mindre det er noe jeg har missforstått er den umulig å hijacke. ny nøkkel genereres på begge sider hver request og sendes kun en gang. bakdelen er at hvis noen får tak i hashen i databasen kan den brukes til å generere en fungerende nøkkel. utestet og uferdig men...

 

classes/dbBase.class.php

Klikk for å se/fjerne innholdet nedenfor
<?php
/**
*
* Class: dbBase - configuration information
*
**/
class dbBase
{

 var $settings;

 function getSettings()
 {

// System variables
$settings['sitePath'] = '';

// Database variables
$settings['dbHost'] = 'localhost';
$settings['dbUser'] = 'dbuser';
$settings['dbPass'] = 'dbpass';
$settings['dbName'] = 'dbname';

return $settings;

 }

}
?>

classes/dbTraffic.class.php

Klikk for å se/fjerne innholdet nedenfor
<?php
//////////////////////////////////////////
// Class: dbTraffic
// Notes: MySQL db communicator.
//////////////////////////////////////////
require_once('classes/dbBase.class.php');

class dbTraffic extends dbBase
{

 var $theQuery; // Holds query before escaped.
 var $escQuery; // Holds query after escape.
 var $link;	 // Database link handle.

 // String escape function gotten from www.diskusjon.no
 function quoteSmart($qry)
{
// Stripslashes
if (get_magic_quotes_gpc()) {
  $qry = stripslashes($qry);
}
// Quote if not a number or a numeric string
if (!is_numeric($qry)) {
  $qry = "'" . mysql_real_escape_string($qry) . "'";
}
return $qry;
 }

 // Opens a database connection using settings from dbBase.
 function open()
 {

$settings = dbBase::getSettings();

$host = $settings['dbHost'];
$user = $settings['dbUser'];
$pass = $settings['dbPass'];
$db = $settings['dbName'];

$this->link = mysql_connect($host, $user, $pass);
mysql_select_db($db);
register_shutdown_function(array(&$this, 'close'));
 }

 // Sends a escaped query to database. Returns result.
 function query($query)
 {
$this->theQuery = $query;
$this->escQuery = $this->quoteSmart($query);
return mysql_query($this->escQuery, $this->link);
 }

 // Takes an SQL query as an argument and returns object.
 function getObj($query)
 {
$result = $this->query($query);
return mysql_fetch_object($result);
 }

 // Close database connection. registered as shutdown function.
 function close()
 {
mysql_close($this->link);
 }
}
?>

classes/dbAuth.class.php

Klikk for å se/fjerne innholdet nedenfor
<?php
/**
*
* Class: dbAuth - authentication
*
* Methods:
*
*   isAuth()
*	 Returns 1 if user have a valid key and ip compared to database. Returns 0 otherwise.
*
*   doAuth()
*	 Checks username and key with database. If valid, stores nonce and ip, and returns 1. Returns 0 otherwise.
*
*   createUser(username, password, email)
*	 Create a user in the database.
*
*   deleteUser(username or userid)
*	 Deletes user from database.
*
**/
require_once('classes/dbTraffic.class.php');

class dbAuth extends dbTraffic
{

 var $prefix = 'auth';
 var $crUserTable = '
CREATE TABLE '.$prefix.'User (
uid INT(6) NOT NULL PRIMARY KEY auto_increment,
username VARCHAR(20),
password VARCHAR(40),
nonce VARCHAR(10),
ip VARCHAR(15),
email VARCHAR(60)
);
';
 var $crGroupTable = '
CREATE TABLE '.$prefix.'Group (
gid INT(2) NOT NULL PRIMARY KEY auto_increment,
groupname VARCHAR(10)
);
INSERT INTO '.$prefix.'Group VALUES(
"",
"users"
);
';
 var $crUserGroup = '
CREATE TABLE '.$prefix.'UserGroup (
uid INT(6),
gid INT(2),
PRIMARY KEY(uid, gid)
);
';

 // Create stronger hash from password.  
 private function createKey($password)
 {
$seed = substr($password, 0, 6);
$password = $seed.$password;
for($i = 0; $i <= 1000; $i++)
{
  $password = sha1($password);
}
return $password;
 }


 // Create necessary tables.
 function createTables()
 {
$qry = $crUserTable;
$a = dbTraffic::query($qry);
$qry = $crGroupTable;
$b = dbTraffic::query($qry);
$qry = $crUserGroup;
$c = dbTraffic::query($qry);
$d = variant_and($a,$b);
return variant_and($c, $d);
 }

 // Create user.
 function createUser($username, $password, $email)
 {
$password = $this->createKey($password);
$qry = 'INSERT INTO '.$prefix.'User(uid, username, password, email) VALUES("", "'.$username.'", "'.$password.'", "'.$email.'");';
$a = dbTraffic::query($qry);
$qry = 'INSERT INTO '.$prefix.'UserGroup VALUES((SELECT uid FROM '.$prefix.'User WHERE username = "'.$username.'"),(SELECT gid FROM '.$prefix.'Group WHERE grouname="users"));';
$b = dbTraffic::query($qry);
return variant_and($a, $b);
 }

 // Delete user.
 function deleteUser($input)
 {
if(is_numeric($input)) // if numeric expect sid, else expect username.
{
  $method = 'uid = "'.$input.'"';
  $uid = $input;
} else {
  $method = 'username = "'.$input.'"';
  $qry = 'SELECT uid FROM '.$prefix.'User WHERE '.$method.';';
  $obj = dbTraffic::getObj($qry);
  $uid = $obj->uid;
}
$qry = 'DELETE FROM '.$prefix.'User WHERE '.$method.';'; // Delete user.
$a = dbTraffic::query($qry);
$qry = 'DELETE FROM '.$prefix.'UserGroup WHERE uid = "'.$uid.'";'; // Delete user - group relations.
$b = dbTraffic::query($qry);
return variant_and($a, $b);
 }

 // Check key and ip with database.
 function isAuth($key, $nonce, $ip, $group = 'users')
 {
$qry = 'SELECT password, nonce, groupname FROM '.$prefix.'User, '.$prefix.'Group, '.$prefix.'UserGroup WHERE, '.$prefix.'User.uid = '.$prefix.'UserGroup.uid AND groupname = "'.$group.'" ip = "'.$ip.'";';
$obj = dbTraffic::getObj($qry);
$dbNonce = $obj->nonce;
$dbKey = sha1($nonce.sha1($dbNonce.$obj->password));
$dbGroup = $obj->groupname;
if(($key == $dbkey) && ($group == $dbGroup))
{
  return 1;
} else {
  return 0;
}
 }

 // Check username and password with database. Store ip and nonce.
 function doAuth($username, $key, $nonce1, $nonce2, $group = 'users')
 {
$a = 0;
$qry = 'SELECT password FROM '.$prefix.'User WHERE username = '.$username.';';
$obj = dbTraffic::getObj($qry); // Get password.
$dbKey = sha1($nonce1.$obj->password); // Create key.
if($key == $dbKey) { // Compare keys
  $a = 1; // (*)
  $qry = 'UPDATE '.$prefix.'User nonce = "'.$nonce2.'" WHERE username = "'.$username.'";';
  dbTraffic::query($qry); // Store nonce.
} else {
  return 0; // (**)
}
// Check if user is in group which have access to page being requested.
$qry = 'SELECT username from '.$prefix.'User, '.$prefix.'UserGroup, '.$prefix.'Group WHERE '.$prefix.'User.username = "'.$username.'" AND '.$prefix.'UserGroup.uid = '.$prefix.'User.uid AND '.$prefix.'Group.gid = '.$prefix.'UserGroup.gid AND .'$prefix.'Group.groupname = "'.$group.'";';
if(dbTraffic::getObj($qry)) $a = $a + 1; // (***)
return $a // Returns 1 (*) if user is valid but not in group, 2 (***) if both valid and in group, 0 otherwise (**).
 }
}

?>

login.php

Klikk for å se/fjerne innholdet nedenfor
<?php

 if($_POST)
 {
die(print_r($_POST)."/nCookie: ".$_COOKIE['SOLIDCRKEY'].'---'.strlen($_COOKIE['SOLIDCRKEY']));
 }

 function genNonce($length)
 {
$chars = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz01234567890123456789";
for($i = 0; $i <= $length; $i++)
{
  $return = $return.$chars[mt_rand(0, strlen($chars))];
}
return $return;
 }

 $nonce1 = genNonce(10);
 $nonce2 = genNonce(10);

?>
<html>
 <head>
<title>Login
</title>
<script type="text/javascript">
  /**
  *
  *  Secure Hash Algorithm (SHA1)
  *  http://www.webtoolkit.info/
  *
  **/

  function sha1 (msg) {

   function rotate_left(n,s) {
	var t4 = ( n<<s ) | (n>>>(32-s));
	return t4;
   };

	  function lsb_hex(val) {
	var str="";
	var i;
	var vh;
	 var vl;

	for( i=0; i<=6; i+=2 ) {
		vh = (val>>>(i*4+4))&0x0f;
		vl = (val>>>(i*4))&0x0f;
		str += vh.toString(16) + vl.toString(16);
	}
	return str;
	  };

	  function cvt_hex(val) {
	var str="";
	var i;
	var v;

	for( i=7; i>=0; i-- ) {
		v = (val>>>(i*4))&0x0f;
		str += v.toString(16);
	}
	return str;
	  };


   function Utf8Encode(string) {
	string = string.replace(/\r\n/g,"\n");
	var utftext = "";

	for (var n = 0; n < string.length; n++) {

		var c = string.charCodeAt(n);

		if (c < 128) {
	  utftext += String.fromCharCode(c);
		}
		else if((c > 127) && (c < 2048)) {
	  utftext += String.fromCharCode((c >> 6) | 192);
	  utftext += String.fromCharCode((c & 63) | 128);
		}
		else {
	  utftext += String.fromCharCode((c >> 12) | 224);
	  utftext += String.fromCharCode(((c >> 6) & 63) | 128);
	  utftext += String.fromCharCode((c & 63) | 128);
	 }

	}

	return utftext;
   };

	  var blockstart;
   var i, j;
	  var W = new Array(80);
	  var H0 = 0x67452301;
	  var H1 = 0xEFCDAB89;
   var H2 = 0x98BADCFE;
	var H3 = 0x10325476;
   var H4 = 0xC3D2E1F0;
   var A, B, C, D, E;
	  var temp;

	  msg = Utf8Encode(msg);

   var msg_len = msg.length;

	  var word_array = new Array();
	  for( i=0; i<msg_len-3; i+=4 ) {
	j = msg.charCodeAt(i)<<24 | msg.charCodeAt(i+1)<<16 |
	msg.charCodeAt(i+2)<<8 | msg.charCodeAt(i+3);
	word_array.push( j );
   }

   switch( msg_len % 4 ) {
	case 0:
		i = 0x080000000;
	break;
	case 1:
		i = msg.charCodeAt(msg_len-1)<<24 | 0x0800000;
	break;

	case 2:
		i = msg.charCodeAt(msg_len-2)<<24 | msg.charCodeAt(msg_len-1)<<16 | 0x08000;
	break;

	case 3:
		i = msg.charCodeAt(msg_len-3)<<24 | msg.charCodeAt(msg_len-2)<<16 | msg.charCodeAt(msg_len-1)<<8	| 0x80;
	break;
   }

	  word_array.push( i );

	  while( (word_array.length % 16) != 14 ) word_array.push( 0 );

   word_array.push( msg_len>>>29 );
   word_array.push( msg_len>>>29 );
	  word_array.push( (msg_len<<3)&0x0ffffffff );


	  for ( blockstart=0; blockstart<word_array.length; blockstart+=16 ) {

	for( i=0; i<16; i++ ) W[i] = word_array[blockstart+i];
	for( i=16; i<=79; i++ ) W[i] = rotate_left(W[i-3] ^ W[i-8] ^ W[i-14] ^ W[i-16], 1);

	A = H0;
	B = H1;
	C = H2;
	D = H3;
	E = H4;

	for( i= 0; i<=19; i++ ) {
		temp = (rotate_left(A,5) + ((B&C) | (~B&D)) + E + W[i] + 0x5A827999) & 0x0ffffffff;
		E = D;
		D = C;
		C = rotate_left(B,30);
		B = A;
		A = temp;
	}

	for( i=20; i<=39; i++ ) {
		temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0x6ED9EBA1) & 0x0ffffffff;
		E = D;
		D = C;
		C = rotate_left(B,30);
		B = A;
		A = temp;
	}

	for( i=40; i<=59; i++ ) {
		temp = (rotate_left(A,5) + ((B&C) | (B&D) | (C&D)) + E + W[i] + 0x8F1BBCDC) & 0x0ffffffff;
		E = D;
		D = C;
		C = rotate_left(B,30);
		B = A;
		A = temp;
	}

	for( i=60; i<=79; i++ ) {
		temp = (rotate_left(A,5) + (B ^ C ^ D) + E + W[i] + 0xCA62C1D6) & 0x0ffffffff;
		E = D;
		D = C;
		C = rotate_left(B,30);
		B = A;
		A = temp;
	}

	H0 = (H0 + A) & 0x0ffffffff;
	H1 = (H1 + B) & 0x0ffffffff;
	H2 = (H2 + C) & 0x0ffffffff;
	H3 = (H3 + D) & 0x0ffffffff;
	H4 = (H4 + E) & 0x0ffffffff;

	  }

	  var temp = cvt_hex(H0) + cvt_hex(H1) + cvt_hex(H2) + cvt_hex(H3) + cvt_hex(H4);

	  return temp.toLowerCase();

  }

  /**
  *
  * grimjoeys more secure login and session handeling js component
  *
  **/
  function loginSubmit()
  {
	// Cryptographically secure random values from server
	var nonce1 = "<?php echo($nonce1) ?>";
	var nonce2 = "<?php echo($nonce2) ?>";

	// Get password from form
	var password = document.loginForm.passwordIn.value;

	// Get seed
	var seed = password.substr(0, 6);

	// Add seed to password
	password = seed + password;

	// Notify wait
	alert("Login: Strengthening key... Might take a few seconds.");

	// Key strengthening
	for (i = 0; i <= 1000; i++)
	{
	  password = sha1(password);
	};

	// Set cookie key for further authentication
	document.cookie = "SOLIDCRKEY=" + escape(sha1(nonce2 + password));

	// Remove password from form
	document.loginForm.passwordIn.value = "fuck off damn sniffer";

	// Set hidden input to key value
	document.loginForm.password.value = sha1(nonce1 + password);
	document.loginForm.submit();

  };
</script>
 </head>
 <body>
<table>
  <form name="loginForm" action="<?php echo($_SERVER['PHP_SELF']) ?>" method="post">
	<tr><td>Username:<td><input type="text" name="username" value="">
	<tr><td>Password:<td><input type="password" name="passwordIn" value="">
	<input type="hidden" name="nonce1" value="<?php echo($nonce1) ?>">
	<input type="hidden" name="nonce2" value="<?php echo($nonce2) ?>"> 
	<input type="hidden" name="password" value="">
	<tr><td colspan="2"><input type="button" onClick="loginSubmit();" name="submitLogin" value="Login">
  </form>
</table>
 </body>
</html>

 

red: denne benytter cookies til lokal lagring av base key og er derfor ikke sikker.

Endret av grimjoey
Lenke til kommentar
  • 2 uker senere...
lefsaker: Nice. Jeg bruker noe lignende for å logge antall hits på avataren min, som egentlig er en GD-generert PHP-fil. :)

6834460[/snapback]

 

Inspirert av jorgis laget jeg en hitcounter med iplogger for avatarer med GD.

 

Opprett filene ip.log og hits.log, samt din avatar. Endre filnavnet i "raabilde = "avatar80x80.png"; // bilde som skal importeres, png". Hvis bildet er i en annen størrelse enn 80x80 endres også "$bilde = ImageCreate(80,80); // lager bildet (bredde, høyde) - må være samme som importert bilde".

 

Når du legger til avataren på et forum må du bruke URL-metoden.

 

(tror det var alt.. )

 

Klikk for å se/fjerne innholdet nedenfor

PHP
<?

/*

Avatar med GD v. 1.0

Logging av IP-adresser og hitcounter

 

Av Einar Helland Berger <[email protected]>

www.einar.hellandberger.org

 

Brukes på eget ansvar.

*/

 

header("Content-type: image/png"); // sender header til nettleser for å emulere bilde

$bilde ImageCreate(80,80); // lager bildet (bredde, høyde) - må være samme som importert bilde

 

$raabilde "avatar80x80.png"// bilde som skal importeres, png

$bilde imagecreatefrompng($raabilde); // importerer bilde

 

$ip $_SERVER["REMOTE_ADDR"]; // henter ip fra klient

$tilkobling_1 fopen('ip.log' "a"); // åpner ip.log for 'append'

fputs($tilkobling_1"$ip"); // skriver til ip.log

fclose($tilkobling_1); // lukker tilkoblingen til ip.log

 

$hits file('hits.log'); // importerer antall hits fra hits.log

$hits[0] ++; // finner neste hit

$tilkobling_2 fopen('hits.log' "w"); // åpner en tilkobling til hits.log

fputs($tilkobling_2"$hits[0]"); // skriver vårt nye tall

fclose($tilkobling_2); // lukker tilkoblingen til hits.log

 

ImagePng($bilde); // Output'er bildet som PNG

ImageDestroy($bilde); // Frir vekk minne

?>

 

Mitt includescript (mange av disse, men alle er forskjellige :roll: ) filer inkluders fra mappen /inc med php-extension. Forsiden.php inkluderes som standard (alt kan endres).

Klikk for å se/fjerne innholdet nedenfor

PHP
<?

/*

Includescript v. 1.0

Med sikkerhetsinstillinger

 

Av Einar Helland Berger <[email protected]>

www.einar.hellandberger.org

 

Brukes på eget ansvar.

*/

 

/* Oppsett */

 

$ext "php" // Filendelsen på filene

$index "forsiden" // Siden som kommer opp når variablen er tom

$mappe "inc" // Mappen som filene ligger i

 

/* Script */

 

if (array_key_exists('side'$_GET)) {

$side $_GET['side'] ;

strip_tags($side) ; // Fjerner uønsket php og html kode fra stringen

 

if (preg_match('/(http://|^/|.+?/)/'$side)) {

echo "Stringen inneholder en eller flere ulovlige tegn." // Viser feilmelding hvis den finner uønskede tegn 

} elseif (file_exists("$mappe$side.$ext")) { // Hvis filen finnes

 include("$mappe$side.$ext") ; // Inkluder den

} else { // Hvis ikke

echo ("<h3>Feil 404</h3><p>Siden finnes ikke.</p>") ; // Vis en feilmelding

}

 

} else { 

include("$mappe$index.$ext") ; // Hvis variablen er tom inkluderes standardfilen

}

?>

 

Einar :)

Lenke til kommentar
  • 3 måneder senere...

Dette er ikke akkurat en fullstendig kodesnutt, men et ganske kjekt array som jeg tror mange kan dra nytte av.

 

Klikk for å se/fjerne innholdet nedenfor
<?php
$arr = array(
 0 => array( 'fylke'  => 'Akershus',
    'kommuner'  => array( 'Asker', 'Aurskog-Høland', 'Bærum', 'Eidsvoll', 'Enebakk', 'Fet', 'Frogn', 'Gjerdrum', 'Hurdal', 'Lørenskog', 'Nannestad', 'Nes', 'Nesodden', 'Nittedal', 'Oppegård', 'Rælingen', 'Skedsmo', 'Ski', 'Sørum', 'Ullensaker', 'Vestby', 'Ås',
    )),

 1 => array( 'fylke'  => 'Aust-Agder',
    'kommuner'  => array('Arendal', 'Birkenes', 'Bygland', 'Evje og Hornnes', 'Froland', 'Gjerstad', 'Grimstad', 'Iveland', 'Lillesand', 'Risør', 'Tvedestrand', 'Valle', 'Vegårshei', 'Åmli',
    )),

 2 => array( 'fylke'  => 'Buskerud',
    'kommuner'  => array('Drammen', 'Flesberg', 'Flå', 'Gol', 'Hemsedal', 'Hol', 'Hole', 'Hurum', 'Hønefoss', 'Kongsberg', 'Krødsherad', 'Lier', 'Modum', 'Nedre Eiker', 'Nes', 'Nore og Uvdal', 'Rollag', 'Røyken', 'Sigdal', 'Øvre Eiker', 'Ål',
    )),

 3 => array( 'fylke'  => 'Finnmark',
    'kommuner'  => array('Alta', 'Berlevåg', 'Båtsfjord', 'Gamvik', 'Hammerfest', 'Hasvik', 'Karasjok', 'Kautokeino', 'Kvalsund', 'Lebesby', 'Loppa', 'Måsøy', 'Nesseby', 'Nordkapp', 'Porsanger', 'Sør-Varanger', 'Tana', 'Vadsø', 'Vardø',
    )),

 4 => array( 'fylke'  => 'Hedmark',
    'kommuner'  => array('Alvdal', 'Eidskog', 'Elverum', 'Engerdal', 'Folldal', 'Grue', 'Hamar', 'Kongsvinger', 'Løten', 'Nord-Odal', 'Os', 'Rendalen', 'Ringsaker', 'Stange', 'Stor-Elvdal', 'Sør-Odal', 'Tolga', 'Trysil', 'Tynset', 'Våler', 'Åmot', 'Åsnes',
    )),
  
 5 => array( 'fylke'  => 'Hordaland',
    'kommuner'  => array('Askøy', 'Austevoll', 'Austrheim', 'Bergen', 'Bømlo', 'Eidfjord', 'Etne', 'Fedje', 'Fitjar', 'Fjell', 'Fusa', 'Granvin', 'Jondal', 'Kvam', 'Kvinnherad', 'Lindås', 'Masfjorden', 'Meland', 'Modalen', 'Odda', 'Os', 'Osterøy', 'Radøy', 'Samnanger', 'Stord', 'Sund', 'Sveio', 'Tysnes', 'Ullensvang herad', 'Ulvik', 'Vaksdal', 'Voss', 'Øygarden',
    )),
  
 6 => array( 'fylke'  => 'Møre og Romsdal' ,
    'kommuner'  => array( 'Aukra', 'Aure', 'Averøy', 'Eide', 'Frei', 'Fræna', 'Giske', 'Gjemnes', 'Halsa', 'Haram', 'Hareid', 'Herøy', 'Kristiansund', 'Midsund', 'Molde', 'Nesset', 'Norddal', 'Rauma', 'Rindal', 'Sande', 'Sandøy', 'Skodje', 'Smøla', 'Stordal', 'Stranda', 'Sula', 'Sunndal', 'Surnadal', 'Sykkylven', 'Tingvoll', 'Tustna', 'Ulstein', 'Vanylven', 'Vestnes', 'Volda', 'Ørskog', 'Ørsta', 'Ålesund',
    )),
  
 7 => array( 'fylke'  => 'Nordland',
    'kommuner'  => array('Alstahaug', 'Andøy', 'Ballangen', 'Beiarn', 'Bindal', 'Bodø', 'Brønnøy', 'Bø', 'Dønna', 'Evenes', 'Fauske', 'Flakstad', 'Gildeskål', 'Grane', 'Hadsel', 'Hamarøy', 'Hattfjelldal', 'Hemnes', 'Herøy', 'Leirfjord', 'Lurøy', 'Lødingen', 'Meløy', 'Moskenes', 'Narvik', 'Nesna', 'Rana', 'Rødøy', 'Røst', 'Saltdal', 'Skjerstad', 'Sortland', 'Steigen', 'Sømna', 'Sørfold', 'Tjeldsund', 'Træna', 'Tysfjord', 'Vefsn', 'Vega', 'Vestvågøy', 'Vevelstad', 'Værøy', 'Vågan', 'Øksnes',
    )),
  
 8 => array( 'fylke'  => 'Nord-Trøndelag',
    'kommuner' => array('Flatanger', 'Fosnes', 'Frosta', 'Grong', 'Høylandet', 'Inderøy', 'Leka', 'Leksvik', 'Levanger', 'Lierne', 'Meråker', 'Mosvik', 'Namdalseid', 'Namsos', 'Namsskogan', 'Nærøy', 'Overhalla', 'Røyrvik', 'Snåsa', 'Steinkjer', 'Stjørdal', 'Stjørdal', 'Verdal', 'Verran', 'Vikna',
    )),
  
 9 => array( 'fylke'  => 'Oppland' ,
    'kommuner' =>  array('Dovre', 'Etnedal', 'Gausdal', 'Gjøvik', 'Gran', 'Jevnaker', 'Lesja', 'Lillehammer', 'Lom', 'Lunner', 'Nord-Aurdal', 'Nord-Fron', 'Nordre Land', 'Ringebu', 'Sel', 'Skjåk', 'Søndre Land', 'Sør-Aurdal', 'Sør-Fron', 'Vang', 'Vestre Slidre', 'Vestre Toten', 'Vågå', 'Østre Toten', 'Øyer', 'Øystre Slidre',
    )),
  
 10 => array( 'fylke'  => 'Oslo' ,
    'kommuner' =>  array( 'Alna', 'Bjerke', 'Frogner', 'Gamle Oslo', 'Grorud', 'Grünerløkka', 'Marka', 'Nordre Aker', 'Nordstrand', 'Sagene', 'Sentrum', 'St.Hanshaugen', 'Stovner', 'Søndre Nordstrand', 'Ullern', 'Vestre Aker', 'Østensjø',
    )),
  
 11 => array( 'fylke'  => 'Rogaland' ,
    'kommuner' =>   array( 'Bjerkreim', 'Bokn', 'Eigersund', 'Finnøy', 'Forsand', 'Gjesdal', 'Haugesund', 'Hjelmeland', 'Hå', 'Karmøy', 'Klepp', 'Kvitsøy', 'Lund', 'Randaberg', 'Rennesøy', 'Sandnes', 'Sauda', 'Sokndal', 'Sola', 'Stavanger', 'Strand', 'Suldal', 'Tau', 'Time', 'Tysvær', 'Utsira', 'Vindafjord', 'Ølen',
    )),
  
 12 => array( 'fylke'  => 'Sogn og Fjordane' ,
    'kommuner' =>  array( 'Askvoll', 'Aurland', 'Balestrand', 'Bremanger', 'Eid', 'Fjaler', 'Flora', 'Førde', 'Gaular', 'Gloppen', 'Gulen', 'Hornindal', 'Hyllestad', 'Høyanger', 'Jølster', 'Leikanger', 'Luster', 'Lærdal', 'Naustdal', 'Selje', 'Sogndal', 'Solund', 'Stryn', 'Vik', 'Vågsøy', 'Årdal', 'Agdenes',
    )),
  
 13 => array( 'fylke'  => 'Sør-Trøndelag' ,
    'kommuner' =>  array( 'Bjugn', 'Frøya', 'Hemne', 'Hitra', 'Holtålen', 'Klæbu', 'Malvik', 'Meldal', 'Melhus', 'Midtre Gauldal', 'Oppdal', 'Orkdal', 'Osen', 'Rennebu', 'Rissa', 'Roan', 'Røros', 'Selbu', 'Skaun', 'Snillfjord', 'Trondheim', 'Tydal', 'Ørland', 'Åfjord',
    )),
  
 14 => array( 'fylke'  => 'Telemark' ,
    'kommuner' =>  array( 'Bamble', 'Bø', 'Drangedal', 'Fyresdal', 'Hjartdal', 'Kragerø', 'Kviteseid', 'Nissedal', 'Nome', 'Notodden', 'Porsgrunn', 'Sauherad', 'Seljord', 'Siljan', 'Skien', 'Tinn', 'Tokke', 'Vinje',
    )),
  
 15 => array( 'fylke'  => 'Troms' ,
    'kommuner' =>  array( 'Balsfjord', 'Bardu', 'Berg', 'Bjarkøy', 'Dyrøy', 'Gratangen', 'Harstad', 'Ibestad', 'Karlsøy', 'Kvæfjord', 'Kvænangen', 'Kåfjord', 'Lavangen', 'Lenvik', 'Lyngen', 'Målselv', 'Nordreisa', 'Salangen', 'Skjervøy', 'Skånland', 'Storfjord', 'Svalbard', 'Sørreisa', 'Torsken', 'Tranøy', 'Tromsø',
    )),
  
 16 => array( 'fylke'  => 'Vest-Agder' ,
    'kommuner' =>  array( 'Audnedal', 'Farsund', 'Flekkefjord', 'Hægebostad', 'Kristiansand', 'Kvinesdal', 'Lindesnes', 'Lyngdal', 'Mandal', 'Marnardal', 'Sirdal', 'Songdalen', 'Søgne', 'Vennesla', 'Åseral',
    )),
    
 17 => array( 'fylke'  => 'Vestfold' ,
    'kommuner' =>  array( 'Andebu', 'Borre', 'Hof', 'Holmestrand', 'Horten', 'Lardal', 'Larvik', 'Nøtterøy', 'Ramnes', 'Sande', 'Sandefjord', 'Stokke', 'Svelvik', 'Tjøme', 'Tønsberg', 'Våle',
    )),
    
 18 => array( 'fylke'  => 'Østfold' ,
    'kommuner' =>  array( 'Aremark', 'Askim', 'Eidsberg', 'Fredrikstad', 'Halden', 'Hobøl', 'Hvaler', 'Marker', 'Moss', 'Rakkestad', 'Rygge', 'Rømskog', 'Råde', 'Sarpsborg', 'Skiptvet', 'Spydeberg', 'Trøgstad', 'Våler',
    )),
  
 );

$loc = "Hammerfest"; //Evt brukerdata

$output .= "<select name='bosted'>\n\r";
foreach( $arr as $fylker )
{
$output .= "<optgroup label='{$fylker['fylke']}'>\n\r";
foreach( $fylker['kommuner'] as $kommune )
{
$output .=  ( $kommune == $loc ) ? "<option value='{$kommune}' selected='selected'>{$kommune}</option>\n\r" : "<option value='{$kommune}'>{$kommune}</option>\n\r";
}
$output .= "</optgroup>\n\r";
}
$output .= "</select>";

echo $output;

?>

 

Er kanskje en kode som trenger litt tid (har ikke målt), men det gjør meg ikke så mye.

 

EDIT: Parse error er ikke kult.

 

EDIT2: Trengte vist ikke så lang tid som jeg fryktet. ca 0.02sec.

Endret av M4rTiN
Lenke til kommentar

Her er en mysql klasse. Veldig enkel.

 

Den har en funksjon som viser hvor du har feil, hvis du har feil.

Altså hvilken fil og hvilken linje feilen stammer fra.

Det gjør feilsøking enklere.

 

Denne funksjonen er slått på som standard.

Hvis du ikke vil ha den på kan du skrive dette etter at du har initisert objectet.

 

$sql->output = false;

 

 

Her er klassen :)

Klikk for å se/fjerne innholdet nedenfor
PHP

# Kan brukes på to måter:

#  1. skriv inn brukernavn, passord, host og db i klassen.

#  eller du kan bruke den slik:

 

$sql = new sql("host" "user", "pass", "db");

$result = $sql->query("SELECT * FROM table");

 

class sql 

{

private

$mysql = array('host' => 'localhost',

 'user' => 'brukernavn',

 'pass' => 'passord',

 'db' => 'database'),

$message  = array(1 => 'Linjenummer:',

 2 => 'Fil:',

 3 => 'Det skjedde en feil ved tilkoblingen til MySQL serveren.',

 4 => 'Feilmelding fra mysql',

 5 => 'Kunne ikke koble til databasen',

 6 => 'Det var en feil med spørringen');

var $output = true,

$Host, $User, $Pass, $db;

 

function __construct($Host = '', $User = '', $Pass = '', $db = '')

{

if(isset($Host)) $this->mysql['host'] = $Host;

if(isset($User)) $this->mysql['user'] = $User;

if(isset($Pass)) $this->mysql['pass'] = $Pass;

if(isset($db)) $this->mysql['db'] = $db;

if(!@mysql_connect($this->mysql['host'], $this->mysql['user'], $this->mysql['pass']))

{

$this->mysql_error($this->message[3]);

return false;

}

if(!mysql_select_db($this->mysql['db']))

{

$this->mysql_error($this->message[5]);

return false;

}

else

{

return true;

}

}

 

public function query($query)

{

if(!$result = mysql_query($query))

{

$this->mysql_error($this->message[6]);

return false;

}

else

{

return $result;

}

}

private function mysql_error($msg)

{

$first2 = 0;

$first = 1;

$trace = debug_backtrace();

$a = count($trace)-2;

for($c = 0; $c <= $a; $c++)

{

$errortrace .= "<b>" . $this->message[1] . "</b> " . $trace[$c]['line']."<br>";

$errortrace .= "<b>" . $this->message[2] . "</b> " . $trace[$c]['file']."<br>";

}

 

if($this->output == true)

{

echo("

<fieldset>

<legend>Mysql Error</legend>

<b>" . $msg . "</b><br>

$errortrace<br>

<b>" . $this->message[4] . "</b><br>"

. mysql_errno() 

. ": " 

. mysql_error()

. "

</fieldset>

");

}

}

}

Lenke til kommentar
*snip*

9398759[/snapback]

  • Hvordan skal $Host, $User, $Pass og $db ikke være satt (jfr. isset()) i konstruktøren? Burde du ikke heller bruke !empty() ?
    Du burde ikke gi dem standardverdi uansett, når all infoen er påkrevd?
  • Burde det ikke være noen form for escape-metode som escaper input for å umuliggjøre sql injection?
  • Du koder PHP5, og der bruker man ikke "var" foran variabler.
  • Errorfunksjonen din bruker html-tags som er "deprecated".

Lenke til kommentar
*snip*

9398759[/snapback]


  •  
  • Hvordan skal $Host, $User, $Pass og $db ikke være satt (jfr. isset()) i konstruktøren? Burde du ikke heller bruke !empty() ?
    Du burde ikke gi dem standardverdi uansett, når all infoen er påkrevd?
     

9411899[/snapback]

 

Som han sa sjølv så er ikkje verdiene påkrevd, vist du ikkje skrive inn noe så skal klassen hente dei som er koda inn eit par linjer over.

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å
×
×
  • Opprett ny...