besökare lägga länkar
25 svar · 429 visningar · startad av zipp3r
Så ja, nu var det klart :)
Naturligtvis går det att göra detta på många sätt och det blir lite coolare om man använder en databas, men jag gjorde en utan, eftersom jag inte vet om du kan köra MySql.
Skriptet består av fyra filer:
v.php3Visar länkarna.
<HTML>
<! () [url="http://www.nic-sys.se"]www.nic-sys.se[/url] >
<HEAD>
</HEAD>
<BODY>
Besökarnas hemsidor:<br>
<?
$fp = fopen("links.txt", 'r');
$antal=fgets($fp,1024);
for($i=0;$i<$antal;$i++){
$link=fgets($fp,255);
$text=fgets($fp,255);
echo "<a href='http://$link'>$text</a><br>";
}
?>
<BR>
<A HREF="s.html">Lägg till din egen länk!</A>
</BODY>
</HTML>
s.html Sida för att skicka in nya länkar.
<HTML>
<! () [url="http://www.nic-sys.se"]www.nic-sys.se[/url] >
<HEAD>
</HEAD>
<BODY>
<FORM METHOD="POST" ACTION="i.php3">
Skriv in länk, typ "www.nic-sys.se":<INPUT NAME="link"><br>
Skriv beskrivning, typ "Min nyhetshemsida":<INPUT NAME="text"><br>
<INPUT TYPE="submit" VALUE="Skicka"><br>
</FORM>
</BODY>
</HTML>
i.php3 Sidan som lägger till länken i filen links.txt
<?
//
// () [url="http://www.nic-sys.se"]www.nic-sys.se[/url]
//
// Sållar bort HTML och annat junk.
$link=htmlspecialchars($link);
$link=nl2br($link);
$link=stripslashes($link);
$link=str_replace("\n","",$link);
$text=htmlspecialchars($text);
$text=nl2br($text);
$text=stripslashes($text);
$text=str_replace("\n","",$text);
//
// Sparar senaste länken överst
$fp = fopen("links.txt", 'r');
$antal=fgets($fp,255);
for($i=0;$i<$antal;$i++){
$alink[$i]=fgets($fp,255);
$atext[$i]=fgets($fp,255);
}
fclose($fp);
$fp = fopen("links.txt", 'w');
fputs($fp,"$antal");
fputs($fp,"$link\n");
fputs($fp,"$text\n");
for($i=0;$i<$antal-1;$i++){
fputs($fp,"$alink[$i]");
fputs($fp,"$atext[$i]");
}
fclose($fp);
//
// "Hoppar tillbaka"
header("Location: v.php3");
?>
Filen links.txt måste innehålla data från början, typ
5
[url="http://www.nic-sys.se"]www.nic-sys.se[/url]
nicclas hemsida
[url="http://www.nic-sys.se"]www.nic-sys.se[/url]
nic-sys.se
[url="http://www.nic-sys.se"]www.nic-sys.se/news/[/url]
AllaNyheter.com
[url="http://www.nic-sys.se"]www.nic-sys.se/news/[/url]
GRATIS!
[url="http://www.nic-sys.se"]www.nic-sys.se[/url]
Grattis!
där 5 anger hur många länkar som finns i filen! Filen links.txt skall vara skrivbar från PHP (typ chmod 777 links.txt).
/nicclas http://www.nic-sys.se <-- Har ett liknande, fast coolare, script på min sida!
[Redigerat av nicclas den 08 aug 2000]
Nä, Matti det behöver du inte. Men du får gärna debugga mitt :)
/nicclas http://www.nic-sys.se
[Redigerat av nicclas den 08 aug 2000]
tack så hemskt mycket
för hjälpen skall lägga upp det på min hemsa nu =)
Mvh zipp3r
------------------
signatur?
NEJ gör inte det än! Jag ska fila lite på den, sen kan du lägga upp den på din sida.
(Detta gäller naturligtvis endast Matti !!!!)
/nicclas
[Redigerat av nicclas den 08 aug 2000]
Det finns väl i princip två sätt att lösa det på.
i) Sätt en "cookie" hos besökaren då en länk skickas in som har en giltighetstid på. säg, fem minuter. Varje gång en besökare skickar in en länk så kollar du om besökaren har denna "cookie".
ii) Gör en logg över alla IP-nummer och tidpunkter då besökare skickar in länkar. Varje gång en länk skickas in kollar du om detta IP har skickat in för mindre än fem minuter sedan. [Alternativt kan du logga IP-nummret endast på den senast inskickade länken och kolla så att det inte är samma person som skickar två gånger "i rad".]
Inget av sätten är dock 100% säkert ty i) fungerar inte om cookies är avstängda och ii) går (ofta) att komma runt genom att koppla ner och koppla upp sig igen, och i och med det få ett nytt IP-nummer.
/nicclas - http://www.nyhetsrubriker.com/
Gjorde enligt ii) och sparade endast IP-nummret på senaste inskickade länken.
Byt i.php3 till denna nya version
<?
//
// () [url="http://www.nic-sys.se"]www.nic-sys.se[/url]
//
$fp = fopen("ipnummer.txt", 'r');
$ip=fgets($fp,255);
fclose($fp);
if(strcmp($ip,$REMOTE_ADDR)){
// Tar bort HTML och annat junk.
$link=htmlspecialchars($link);
$link=stripslashes($link);
$link=str_replace("\n","",$link);
$text=htmlspecialchars($text);
$text=stripslashes($text);
$text=str_replace("\n","",$text);
//
// Sparar senaste länken överst
$fp = fopen("links.txt", 'r');
$antal=fgets($fp,255);
for($i=0;$i<$antal;$i++){
$alink[$i]=fgets($fp,255);
$atext[$i]=fgets($fp,255);
}
fclose($fp);
$fp = fopen("links.txt", 'w');
fputs($fp,"$antal");
fputs($fp,"$link\n");
fputs($fp,"$text\n");
for($i=0;$i<$antal-1;$i++){
fputs($fp,"$alink[$i]");
fputs($fp,"$atext[$i]");
}
fclose($fp);
$fp = fopen("ipnummer.txt", 'w');
$ip=fputs($fp,$REMOTE_ADDR);
fclose($fp);
}
//
// "Hoppar tillbaka"
header("Location: v.php3");
?>
Skapa först en tom fil "ipnummer.txt" som är skrivbar från PHP.
/nicclas - http://www.nyhetsrubriker.com
Jobbigt om man inte har så många besökare bara. Säg att en person vill skicka in en länk. Det går bra för honom. Fyra dagar senare vill han skicka in en ny länk. Men eftersom ingen har skickat in någon länk undertiden så får han inte göra detta.
Då är det bättre att kolla tidpunkten då denne skickade in länken :)
------------------
Kim Halderot - med rätt att snora
Jo, minns jag inte fel så beskrev jag hur man kan göra bara för några timmar sen här ovan. Problemet är att någon skall programmera det också... Jag valde att visa hur man kan programmera det "enklaste" alternativet. Resten klarar du nog själv...
/nicclas - http://www.nic-sys.se
[Redigerat av nicclas den 24 sep 2000]
ok, jag skumläste bara igenom tråden så jag missade väl det. :)
Sorry...
------------------
Kim Halderot - med rätt att snora
Kan man göra så att den kolla om länken redan finns i arkivet. Ie Namn & URL. Och sen undrar jag om det e möjligt att göra så att den lägger ut dom raden den behöver ist för det som e defenierat i links.txt filen. ?? Nån som känner för att spinna vidare ?
varför måste du skriva koden med så j*vla små bokstäver???? x(
Crisse6, möjligen för att övriga forummedlemmar inte vill scrolla i 5 minuter bara för att någon inte känner till hur man ökar fontstorleken i browsern; Klicka på Visa --> Textstorlek --> Störst - wala.
------------------
spelling error.