Just nu i M3-nätverket
Gå till innehåll

Problem med gästbok/inforuta


Brynolf55

Rekommendera Poster

För ett par månader sen skapade jag en funktion på en hemsida, där man kunde uppdatera nyheter direkt via nätet genom att att använda ett gästboks-script och flash. Funkar hur bra som helst (ligger på en unixserver). Nu tänkte jag att denna funktion kunde jag ju använda på en av sidorna på min egen webserver (Visnetic WebSite som körs under Windows 2000) men, icke.

Vanliga counter-script funkar bra, men inte detta.

 

Flash-animationen har variabeln: (gigguide) på textrutan som ska visa texten och laddas med följande i första framen:

NumLow = 0;

NumHigh = 10;

loadVariablesNum("scripts/gigguide.php?NumLow="+NumLow+"&NumHigh="+NumHigh+"&R="+random(999), 0, "POST");

 

I flash-animationen där informationen skrivs har variabeln: (gigs) på inputrutan och skickas iväg med:

on (press) {

if (gigs eq "") {

Status = "Please enter the gig";

} else {

Submit = "Yes";

NumHigh = 10;

NumLow = 0;

loadVariablesNum("scripts/gigguide.php", 0, "POST");

}

}

 

Så här ser koden ut i gigguide.php:

<?

 

if ($Submit == "Yes") {

$filename = "gigguide.txt";

 

$fp = fopen( $filename,"r");

$OldData = fread($fp, 80000);

fclose( $fp );

 

$Input = "<b>gigs: </b>$gigs ----";

 

$New = "$Input$OldData";

 

$fp = fopen( $filename,"w+");

fwrite($fp, $New, 80000);

fclose( $fp );

}

 

$filename = "gigguide.txt";

 

$fp = fopen( $filename,"r");

$Data = fread($fp, 80000);

fclose( $fp );

 

$DataArray = split ("----", $Data);

 

$NumEntries = count($DataArray) - 1;

 

print "&TotalEntries=$NumEntries&NumLow=$NumLow&NumHigh=$NumHigh&gigguide=";

for ($n = $NumLow; $n < $NumHigh; $n++) {

print $DataArray[$n];

if (!$DataArray[$n]) {

Print "Coming Soon";

exit;

}

}

?>

 

Hoppas det är någon som vet vad det är för fel.

Mvh

Tobias Fahlén

 

Länk till kommentar
Dela på andra webbplatser

Det är det vanliga problemet nybörjare brukar ha med nyare versioner av PHP.

Du måste använda dig av superglobalerna $_POST och $_GET istället för dess variabelnamn direkt.

 

Så, nu står det exempelvis $Submit, men det ska stå $_POST["Submit"] om du använder dig av POST, och $_GET["Submit"] om du använder dig av GET.

Detta är för att skript ska vara säkrare.

 

Det du får göra är alltså att gå igenom skriptet och byta ut namnet på alla externa variabler.

 

Länk till kommentar
Dela på andra webbplatser

Jag måste vara dum som en träsko!

 

Vad skall jag döpa om mina externa variabler till och var? Både i Flash och i min php fil?

 

Det funkar att skriva till textfilen nu men informationen som variabeln är knuten till hänger inte med och läses inte in av den Flash-animation som skall visa texten.

 

Länk till kommentar
Dela på andra webbplatser

Den enda filen du ska behöva ändra är din PHP-fil.

Jag har gjort några småändringar i din kod. Gå igenom den, jämför konsultera PHP-manualen, och ställ följdfrågor om det är något som är oklart.

Ändringar inkluderar rawurlencode() på all utdata, break() istället för exit(), och så har jag valt $_REQUEST istället för $_POST eller $_GET då den omfattar båda två:

<?php
$Submit = $_REQUEST["Submit"];
$NumLow = $_REQUEST["NumLow"];
$NumHigh = $_REQUEST["NumHigh"];

if ($Submit == "Yes")
{
$filename = "gigguide.txt";

$fp = fopen($filename, "r");
$OldData = fread($fp, 80000);
fclose($fp);

$Input = "<b>gigs: </b>$gigs ----";

$New = $Input . $OldData;

$fp = fopen($filename, "w+");
fwrite($fp, $New, 80000);
fclose($fp);
}

$filename = "gigguide.txt";

$fp = fopen($filename, "r");
$Data = fread($fp, 80000);
fclose($fp);

$DataArray = split("----", $Data);

$NumEntries = count($DataArray) - 1;

print "&TotalEntries=" . rawurlencode($NumEntries) . "&NumLow=" . rawurlencode($NumLow) . "&NumHigh=" . rawurlencode($NumHigh) . "&gigguide=";
for ($n = $NumLow; $n < $NumHigh; $n++)
{
echo rawurlencode($DataArray[$n]);
if (!$DataArray[$n])
{
echo rawurlencode("Coming Soon");
break;
}
}
?>

 

Länk till kommentar
Dela på andra webbplatser

Tusen tack!

 

Har suttit och försökt hitta några ledtrådar på php.net

men har bara hittat återvändsgränder och gammla faq's.

 

Var hittar jag en sida med en bra PHP manual?

 

Länk till kommentar
Dela på andra webbplatser

Får väl ta mig tid att läsa igenom den ordentligt.

 

På den site som jag gjort tidigare funkar min gamla php kod. Kör de en äldre variant av php?

 

Länk till kommentar
Dela på andra webbplatser

Ja, troligen, eller med inställningen register_globals påslagen. Det är inget jag rekommenderar, men ibland krävs det för att man ska slippa skriva om gamla skript.

Men i just detta fall är det ju inte svårt att uppdatera skriptet.

 

Man får läsa lite allt eftersom i PHP-manualen. Man kan ju inte direkt plöja igenom hela på en gång, men det är bra om man förstått upplägget, och tar för vana att läsa användarkommentarerna längst ned på varje sida.

Det är faktiskt den bästa manualen jag någonsinn använt, alla kategorier.

 

Länk till kommentar
Dela på andra webbplatser

jompa tompa

Ja, en fantastiskt bra manual. Ett tips är att du kan skriva www.php.net/sökord direkt för att göra en sökning. Kanonbra om du till exempel vill kolla upp hur arrays funkar - www.php.net/array, eller om du mer specifikt vill kolla upp array_merg - www.php.net/array_merge

 

Ett litet tips bara...

 

 

 

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...