Kör en gästbok från textfil men vill sortera från början av gästboken. Jag vill ha senaste inlägget först! Sen blir det kosntiga tecken när man skriver & och åäö och sånt. Urlencode som ska dit eller nåt?
Har sökt i forumet men är helt blank så jag klarade inte att vända gästboken med rewind själv :( Hjälp?
<?
if (!isset($name) || !isset($email) || !isset($message) || empty($name) || empty($email) || empty($message)) {
print "&result=Fail";
print "&errorMsg=" . urlencode("fill in all fields...");
exit;
}
$email = strtolower($email);
addentry($name, $email, $message);
function addentry($name, $email, $message) {
$posted = strftime("%D %I:%M %p");
$message = stripslashes($message);
$file = fopen('entry.txt', 'a+');
if (!$file) {
print "&result=Fail";
print "&errorMsg=" . urlencode("Could not open entry.txt file. Change CHMOD levels to 766.");
exit;
}
fputs($file, "<font color=\"#000000\">Name:</font> $name\n<font color=\"#000000\">email:</font> <font color=\"#000000\"><u><A href=\"mailto:$email\">$email</A></u></font><br>\n<font color=\"#000000\">posted:</font> $posted\n<font color=\"#000000\">message:</font> $message\n\n");
fclose($file);
// Send admin an email when new entry occurs
// mailAdmin($name, $email);
}
function mailAdmin($name, $email) {
$mailTo = "Ja <xxx@telia.com>";
$mailFrom = "From: Guestbook <noreply@email.com>";
$mailSubject = "New Guestbook Entry";
$mailBody = "$name ($email) has just posted in your guestbook\n\n";
mail($mailTo, $mailSubject, $mailBody, $mailFrom);
}
print "&result=okay";
exit;
?>
Ok, vi börjar med att visa åäö. Testa att vid skrivningen till filen låta strängen gå igenom funktionen htmlentities().
$message = htmlentities( $message );
För att skriva till början av filen, öppna med mode 'r+' istället för 'a+'. Då skriver du till början av filen istället, och ditt senaste meddelande hamnar så ledes först när du skriver ut dem.
eller det är nog rätt fast jag måste ha "&result=okay&entries=" först i textfilen för att kunna visa det i flash. men den skriver ju nu så att den textslingan hamnar efter inläggen. what to do? :)
Jag vill inte ändra nåt i flashfilen helst eftersom det är ett stort script där med actionsscript som jag verkligen inte har koll på.
går det att skriva till textfilen med min första kod fast den lägger nya inlägg efter just "&result=okay&entries=" som behövs för att flashen ska hitta posterna?
Det är så jag måste ha det!
och sedan så var den lite lurig mot tecknet & också. den slutade skriva ut om man postade en sådan. den kanske förväntar sig fler variabler då? går att lösa? ;)
Som du ser lade jag endast till en rad ( fseek()-raden ) direkt efter att du öppnar din fil. Det här kräver dock att din URL-sträng alltid är 21 tecken lång, ändras den - fungerar inte längre PHP-dokumentet som det ska.
Lurig mot &-tecknet? Skumt. Antagligen förväntar den sig en till variabel i frågesträngen i URL:en... Borde gå att lösa genom att köra en urlencode() på strängen först:
men vad skumt! ibland händer det att det hamnar massa tecken emellan poster. tex.
message=blabl
e
o
messade=blabla
det emellan kommer troligtvis när man skriver "olagliga" tecken.
kanske därför den slutar spara poster med det nya systemet med r+ och seek.
den ersätter vara senaste posten heöa tiden. men den ersätter inget som fanns där från det gamla systemet. hehe allt är skumt!! ytoligen så är det att den muppar sig vid några teckenfel =/
Enda problemet är att när den sökt sig förbi de första 21 tecknena så börjar den skriva över det som står = blir helt fel!
Kan man säga till att den ska börja skriva efter 21 tecken, men bara fylla ut - inte skriva över!? Då skulle nämligen allt fungera!
Det andra sättet var ju att vända på alla inlägg men eftersom jag måste ha med de där första 21 tecknena för att det ska fungera med flashen så är det nog en krångligare väg :(
Har köttat dit några htmlentities och urlencodes för att fixa åäö som blev fel. Det är inte heller rätt än. Hade jag bara urlencode slutade den skriva ut. Hade jag bara htmlentities så slutade den också skriva ut och skrev ett frågetecken i flashen. Hade jag både htmlentities och urlencode så stannade den åtminstone inte, men den skriver ut html-koden för alla åäö =/ Idéer?