Funkar det att använda endast .php?
Jag testade att spara båda i .php eftersom mitt webbhotell inte stöder .php3 men någonstans (jag hittar inte var) så måste ju "index" hänvisa till "lagra" och där måste jag ändra till .php istället för .php3.
Så min fråga är, kan man använda .php och isåfall vart ändrar man lagra.php3 till lagra.php? (Är lite blind för tillfället)
gaboPHP - ännu en gästbok
Gästboken är filbaserad och använder ingen databas. Inläggen sprids över flera sidor och det senaste inlägget läggs överst på första sidan.
Gästboken är uppbyggd av ett antal funktioner:
initiera();
Initierar gästboken, måste köras först.
visa_nav();
Visar en navigeringslist - klickbar lista med sidnummer.
visa_nav_framat();
Visar "nästa sida" bild.
visa_nav_bakat();
Visar "föregående sida" bild.
visa_antal_meddelanden();
Skriver ut antal inlägg i gästboken.
visa_antal_sidor();
Skriver ut antal sidor som gästboken har.
visa_sidnr();
Skriver ut numret på den sida som visas nu.
visa_meddelande(nummer);
Visar meddelande "nummer";
dessutom kan man bestämma hur många inlägg som skall visas på varje sida.
Gästboken tillåter inte HTML-kod i inläggen.
Koden kan kommenteras/diskuteras här:
Ideer för webb-baserad redigering osv. tas emot med öppna armar. Denna gästbok är inte gjord för att visa hur man SKA göra en gästbok utan för hur man KAN göra!
index.php3
HTML-koden inom ///////////// beskriver hur varje inlägg visas.
<! Baserad på gaboPHP från [url="http://www.nic-sys.se"]www.nic-sys.se[/url] !>
<?
// ------ Editera dessa! --------------
$persida=4; // Antal inlägg som skall visas per sida.
$noprev="noprev.gif"; // Sökväk till deaktiverad föregångar-knapp.
$nonext="nonext.gif"; // Sökväg till deaktiverad nästa-knapp.
$prev="prev.gif"; // Sökväg till föregångar-knapp.
$next="next.gif"; // Sökväg till nästa-knapp.
// ------------------------------------
$sidor=0;
$storlek=0;
$namn="";
$epost="";
$meddelande="";
$titel="";
$hemsida="";
$sidnr=1;
function initiera(){
// Initiering av de komponenter som behövs. Körs alltid först!
global $sidor, $persida, $namn, $epost, $meddelande, $hemsida, $titel, $storlek, $start, $sidnr;
// Läs i fil antalet inlägg i gästboken
if(!($fpread = fopen("inlagg.txt", 'r'))){
$fpwrite = fopen("inlagg.txt", 'w');
fputs($fpwrite,"0\n");
fclose($fpwrite);
$sidor=1;
$storlek=0;
}else{
$storlek=fgets($fpread,1024);
$sidnr=floor($start/$persida)+1;
// Beräkna hur många sidor dessa inlägg tar
$sidor=ceil($storlek/$persida);
if($sidor==0) $sidor=1;
// Läser igenom dagboksfil en och lagrar inlägg som skall visas på denna sida
$mess=0;
$index=0;
while(!feof($fpread)){
$data1=fgets($fpread,200);
$data2=fgets($fpread,200);
$data3=fgets($fpread,200);
$data4=fgets($fpread,200);
$data5=fgets($fpread,2020);
$tom=fgets($fpread,1024);
$tom=fgets($fpread,1024);
if($mess>=$start && $mess<$start+$persida){
$namn[$index]=$data1;
$epost[$index]=$data2;
$hemsida[$index]=$data3;
$titel[$index]=$data4;
$meddelande[$index]=$data5;
$index=$index+1;
}
$mess++;
}
}
}
function visa_nav(){
global $start,$persida,$storlek,$sidor,$sidnr;
echo "::: ";
for($i=1;$i<=$sidor;$i++)
if($i==$sidnr)
echo "<a href=\"$PHP_SELF?start=".($i-1)*$persida."\"><b>$i</b></a> ::: ";
else
echo "<a href=\"$PHP_SELF?start=".($i-1)*$persida."\">$i</a> ::: ";
}
function visa_nav_framat(){
// Visar navigeringsknapp för "nästa"
global $start, $sidor, $persida, $storlek;
global $next, $nonext;
if($start+$persida<$storlek){
$newpage=$start+$persida;
echo "<a href=\"$PHP_SELF?start=$newpage\"><img src=\"".$next."\" border=\"0\"></a>";
}else{
echo "<img src=\"".$nonext."\">";
}
}
function visa_nav_bakat(){
// Visar navigeringsknapp för "föregående"
global $start, $sidor, $persida, $storlek;
global $prev, $noprev;
if($start>=$persida){
$newpage=$start-$persida;
echo "<a href=\"$PHP_SELF?start=$newpage\"><img src=\"".$prev."\" border=\"0\"></a>";
}else{
echo "<img src=\"".$noprev."\">";
}
}
function visa_antal_meddelanden(){
global $storlek;
echo $storlek;
}
function visa_antal_sidor(){
global $sidor;
echo $sidor;
}
function visa_sidnr(){
global $sidnr;
echo $sidnr;
}
function visa_meddelande($index){
global $namn, $epost, $meddelande, $hemsida, $titel, $start, $storlek, $persida, $sidor;
$sidan=floor($start/$persida)+1;
$limit=$persida;
if(($sidan==$sidor) && ($storlek % $persida)>0)
$limit=$storlek%$persida;
if($index<$limit && $storlek>0){
//////////////////////////////////////////////////////////////
echo "
Namn: $namn[$index]<br>
Epost: $epost[$index]<br>
Hemsida: $hemsida[$index]<br>
Titel: $titel[$index]<br>
Meddelande: $meddelande[$index]<br><br><hr>
";
///////////////////////////////////////////////////////////////
}
}
?>
<! ----------------------------------------------- !>
<html>
<head>
<title>gaboPHP demo</title>
</head>
<body bgcolor="#c0c0c0">
<! Utför initiera först !>
<?initiera();?>
<center>
En demo av gaboPHP från <a href="http://www.nic-sys.se/">www.nic-sys.se</a>!<br>
<?visa_nav_bakat();?><?visa_nav_framat();?><br>
<?visa_nav();?><br>
Det finns <?visa_antal_meddelanden();?> meddelanden på <?visa_antal_sidor();?> sidor. Detta är sida <?visa_sidnr();?>.
</center>
<br>
<hr>
<! Visa alla inläggen på sidan !>
<?
for($i=0;$i<=$persida;$i++)
visa_meddelande($i);
?>
<tr>
<td>
<form method="post" action="lagra.php3">
<span class="text"> Titel:</span><br>
<input type="Text" name="titel"></input><br>
<span class="text"> Meddelande:</span><br>
<TextArea name="meddel" rows=5 cols=50></TextArea><br>
<span class="text"> Namn:</span><br>
<input type="Text" name="namn"></input><br>
<span class="text"> E-post:</span><br>
<input type="Text" name="epost"></input><br>
<span class="text"> Hemsida:</span><br>
<input type="Text" name="hemsida"></input><br>
<input type="Submit" name="submit" value="Skicka"></input>
</form>
</body>
</html>
lagra.php3
<?
$fpread = fopen("inlagg.txt", 'r');
$dsize=fgets($fpread,1024);
$buffer="";
while(!feof($fpread)){
$buffer.=fgets($fpread,2048);
}
fclose($fpread);
$dsize=$dsize+1;
$lista=Array("meddel","namn","epost","titel","hemsida");
for($i=0;$i<sizeof($lista);$i++){
$$lista[$i]=htmlspecialchars($$lista[$i]);
$$lista[$i]=nl2br($$lista[$i]);
$$lista[$i]=stripslashes($$lista[$i]);
$$lista[$i]=str_replace("\n","",$$lista[$i]);
}
if(strlen($meddel)>0){
$fpwrite = fopen("inlagg.txt", 'w');
fputs($fpwrite,"$dsize\n");
fputs($fpwrite,"<!namn>$namn<!/namn>\n");
fputs($fpwrite,"<!epost>$epost<!/epost>\n");
fputs($fpwrite,"<!hemsida>$hemsida<!/hemsida>\n");
fputs($fpwrite,"<!titel>$titel<!/titel>\n");
fputs($fpwrite,"<!meddel>$meddel<!/meddel>\n");
fputs($fpwrite,"<!ip>$REMOTE_ADDR:".date("Y-n-d:G:i:s")."<!/ip>\n");
fputs($fpwrite,"\n");
fputs($fpwrite,$buffer);
fclose($fpwrite);
header("Location: index.php3");
}
?>
Den katalog som dessa filer ligger i måste vara skrivbar från PHP ("chmod 777 katalogen"). Första gången index.php3 visas syns en varning då filen "inlagg.txt" skapas, den visas inte nästa gång!
(Alternativt: ändra skrivrättigheter på filen inlagg.txt i efterhand.)
En demonstration av hur koden ovan fungerar finns på http://www.nic-sys.se/gaboPHP/index.php3 .
/nicclas
[Redigerat av nicclas den 08 jul 2000]

