Hejsan!
Jag klistrade in ett php skript som kan lägga till länkar... det verkar inte fungera, eftersom ingenting händer när jag jag skrivit till en vad är felet?
http://www.thi-sthlm.com/carl/asp5/index.php
tack på förhand
------------------
/Caze
10 svar · 236 visningar · startad av caze
Hejsan!
Jag klistrade in ett php skript som kan lägga till länkar... det verkar inte fungera, eftersom ingenting händer när jag jag skrivit till en vad är felet?
http://www.thi-sthlm.com/carl/asp5/index.php
tack på förhand
------------------
/Caze
Knepigt när man inte vet hur links.php ser ut...
Så här ser links.php ut:
<?
// Besökarnas länkar 1.2
// Copyright © 2001 Mathias Niklasson
// http://www.niklasson.net/
##################################################
# Script
require ("./variablar.php");
$fp = fopen("$ipfil", 'r');
$ip = fgets($fp,255);
fclose($fp);
if(strcmp($ip,$REMOTE_ADDR)) {
$link=htmlspecialchars($link);
$link=stripslashes($link);
$link=str_replace("\n","",$link);
$text=htmlspecialchars($text);
$text=stripslashes($text);
$text=str_replace("\n","",$text);
$fp = fopen("$linksfil", '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("$linksfil", '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("$ipfil", 'w');
$ip = fputs($fp,$REMOTE_ADDR);
fclose($fp);
}
header("Location: $origfil");
?>
------------------
/Caze
Jo, jag listade ut att det var niklassons.
Testade lite snabbt på min egen server och det fungerar utmärkt.
Eftersom jag kör register_globals = Off så fick jag visserligen ändra lite i mottagningen av variablerna men det är inte problemet hos dig. I så fall hade du fått tomma radbrytningar varje gång någon lägger till en länk.
Det enda jag gjorde, utöver att ladda upp filerna i samma mapp, var att sätta skrivrättigheter på ip.txt och links.txt.
Vad jag kan se, så är det egentligen bara dessa saker du bör kontrollera.
Förstås inte...:(
som du kanske förstår e jag inte bra på detta...vad menar du, vad exakt ska jag göra för att det ska fungerar som för dig...kan du förklara lite mer detaljerat och för en nybörjare som jag "enkelt":)
tack...
------------------
/Caze
Liten reservation.
Om servern du använder kör en forward på IP:et så lär alla besökare få localhost i $REMOTE_ADDR, vilket innebär att de redan satt en länk i filen eftersom ip.txt redan innehåller 127.0.0.1
I detta fallet måste du ändra skriptet:
<?
// Besökarnas länkar 1.2
// Copyright © 2001 Mathias Niklasson
// [url="http://www.niklasson.net/"]http://www.niklasson.net/[/url]
##################################################
# Script
$ip_nummer = getenv(HTTP_X_FORWARDED_FOR);
require ("./variablar.php");
$fp = fopen("$ipfil", 'r');
$ip = fgets($fp,255);
fclose($fp);
if(strcmp($ip,$ip_nummer)) {
$link=htmlspecialchars($link);
$link=stripslashes($link);
$link=str_replace("\n","",$link);
$text=htmlspecialchars($text);
$text=stripslashes($text);
$text=str_replace("\n","",$text);
$fp = fopen("$linksfil", '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("$linksfil", '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("$ipfil", 'w');
$ip = fputs($fp,$ip_nummer);
fclose($fp);
}
header("Location: $origfil");
?>
Detta gäller bl.a. f2s.com men det finns säkert flera.
Nu skrev du ett inlägg under tiden jag skrev mitt.
Skapa en php-fil som ser ut så här:
<?
print ("$REMOTE_ADDR\n")
?>
Ladda upp den på servern och öppna den i webbläsaren.
Om det står 127.0.0.1 på sidan, så ska du istället använda skriptet som jag postade i förra inlägget. Du byter alltså ut all kod i links.php mot den.
nu när jag la in
<?
print ("$REMOTE_ADDR\n")
?>
www.thi-sthlm.com/carl/asp5/kalas.php så visar den inte 127.0.0.1 på sidan utan 217.208.194.243 .
Varför fungerar det ändå inte.... när man lägger till en länk så updateras bara den sidan och inget händer...:(
------------------
/Caze
Ok, då behöver du inte byta koden i skriptet.
Om du laddat upp filerna i samma mapp (och det verkar det ju som) så är det bara att se till så det finns skrivrättigheter på filerna ip.txt samt links.txt
På en unix-server innebär det att man måste chmodda filerna och för det mesta måste det vara 777 eftersom webbservern oftast går som en annan användare.
Är det en windowsmaskin så används inte chmod och är det en sådan du använder, så vet jag inte var problemet ligger. Använder själv inte kombinationen php och windows och har därför ingen möjlighet att testa detta.
På en *nix-server så är du en användare när du loggar in via din ftp-klient. Du har då skrivrättigheter på filerna du laddar upp eftersom du är ägare till dessa. Webbservern är också en användare på servern men är ju inte samma användare som du. Den äger alltså inte dina filer och kan därför inte skriva till filer som du laddar upp. Därför måste du ge tillstånd för andra användare att skriva till filerna ip.txt och links.txt.
Detta kan du göra med din ftp-klient. Det skilljer kanske lite i hur man gör detta men vanligtvis räcker det med att högerklicka på filen och välja något som heter CHMOD i menyn som dyker upp.
Du får då en dialogruta som visar olika kombinationer man kan välja mellan.
Oftast brukar det finnas kryssrutor och dessa är indelade i tre grupper. Ägare, Grupp och Andra. Var och en av dessa är indelade i tre alternativ. Läs, Skriv och exekvera. För att ange chmod 777 så ska alla rutor bockas i.