Gæstebog
Hej,Jeg har hentet den gæstebog der ligger på
http://www.webcafe.dk/artikler/php/phpmysqlgaestebog/
Og det virker også fint nok, men der er lige et stykke af koden i filen gem.php som jeg ikke forstår.
Koden i gem.php ser således ud:
<?php
require("./gbog-ting/mysql-funktioner.php");
require("./gbog-ting/design-funktioner.php");
require("./gbog-ting/indstillinger.php");
/*
* Foerst napper vi variablerne fra miljoet.
*/
if(is_array($HTTP_POST_VARS)) {
$navn = $HTTP_POST_VARS['navn'];
$epost = $HTTP_POST_VARS['epost'];
$besked = $HTTP_POST_VARS['besked'];
} elseif (is_array($_POST)) {
$navn = $_POST['navn'];
$epost = $_POST['epost'];
$besked = $_POST['epost'];
}
/*
* Her er en simpel funktion der spytter en fejlmelding ud.
* Den bruger vi senere, når vi checker, at folk har skrevet noget i formularen.
*/
function gbog_fejl($fejl) {
$generel_tekst = "<p>Vær venlig at gå tilbage og ret til.</p>";
$fejlmelding = "<ul>";
for($i=0;$i<count($fejl);$i++) {
$fejlmelding .= "<li>". $fejl[$i];
}
$fejlmelding .= "</ul>";
echo top("Fejl") . "Gæstebogen brokkede sig lidt over dit input:" . $fejlmelding . $generel_tekst . bund();
exit;
}
/*
* Denne funktion skriver i gæstebogen - altså i databasen.
* Bemærk, at vi ikke bruger PHP til at indsætte tiden, men
* bruger MySQLs indbyggede funktion now().
*/
function skriv_i_gbog($navn, $epost, $besked) {
$ip = getenv('REMOTE_ADDR');
$sql = "insert into gaestebog(navn,epost,besked,ip,tid)
values('$navn','$epost','$besked','$ip',now())";
aabn_forbindelse_og_vaelgdb();
sql_spoerg($sql);
luk_forbindelse();
}
/*
* Vi laver lidt simpelt fejlcheckeri og ser, om der overhovedet
* er skrevet noget. Hvis ikke, bruger vi fejlfunktionen til at brokke os.
* Fejlfunktionen slutter med "exit", der sørger for, at PHP stopper.
*/
if(!ereg("[A-z0-9]+", $navn)) {
$fejl[] = "Du har ikke skrevet dit navn";
}
if(!ereg("[A-z0-9]+", $besked)) {
$fejl[] = "Du har ikke skrevet nogen besked";
}
if(count($fejl) > 0) {
gbog_fejl($fejl);
}
/*
* Hvis vi er nået hertil, så står der i det mindste et eller andet i felterne og vi
* knalder det i databasen med funktionen skriv_i_gbog().
* Vi escaper alle fyfy-tegn med addslashes(). Når vi senere præsenterer indholdet
* af gBogen bruger vi stripslashes() til at "afkode".
*
* Alt dette besvær er til for at folk ikke skal snige ondsindede SQL-kommandoer
* ind i deres indlæg. Nyere versioner af PHP gør alt dette automatisk,
* men vi kan godt li' at være på den sikre side.
*/
skriv_i_gbog(addslashes($navn),addslashes($epost),addslashes($besked));
/*
* Så er skidtet banket i databasen og vi sender folk videre til selve gBogen
* hvor de kan se deres eget indlæg.
*/
header("Location: gbog.php");
/*
* Skal der sendes epost til administratoren?
*
* Bemærk, at vi godt kan gøre dette selv om folk er sendt videre til gBogen.
* Der er ingen grund til at gæsterne skal vente på, at der bliver sendt
* post - derfor kommer det først allersidst.
*/
if($epost_p == "t") {
$ip = getenv('REMOTE_ADDR');
$epostens_indhold = "$navn har skrevet denne besked fra IP-adressen $REMOTE_ADDR:\n-----------------------------------------------------\n\n$besked";
mail($admin_epost, "Der er skrevet i din gBog!", $epostens_indhold);
}
?>
Det jeg ikke forstår er følgende:
if(is_array($HTTP_POST_VARS)) {
$navn = $HTTP_POST_VARS['navn'];
$epost = $HTTP_POST_VARS['epost'];
$besked = $HTTP_POST_VARS['besked'];
} elseif (is_array($_POST)) {
$navn = $_POST['navn'];
$epost = $_POST['epost'];
$besked = $_POST['epost'];
}
Er der ikke en hjælpsom person som vil ”oversætte” det?
Gerne sådan så jeg forstår det, - ikke bare at den henter nogle variabler.
Altså, hvorfor er det sat ind i en if-sætning, og hvad betyder $HTTP_POST_VARS og $_POST?
På forhånd tak.