20. september 2003 - 14:51Der er
16 kommentarer og 1 løsning
fejl i koden
Jeg har følgende kode som der er nogle fejl i. 1: Når man skriver sin email, vil den ikke lave det til et link 2: Hvis man skriver et emne, vil den ikke udskrive det
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, $emne, $epost, $besked) {
$ip = getenv('REMOTE_ADDR');
$sql = "insert into gaestebog(navn,epost,besked,emne,ip,tid) values('$navn','$epost','$besked','$emne','$ip',now())";
/* * 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. */
/* * 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";
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Gbog.php ser således ud! Kan I se hvad der er galt nu. Har rodet lidt med det, og nu udskriver den email adressen der hvor emnet skal stå. der hvor ham som har skrevet i gæstebogen's navn skal stå, laves ikke om til et email link! Så det er altså disse fejl som skal rettes. Håber i kan hjælpe
<?php
##################################################################### # # # Dette er en simpel Gæste bog som du må bruge lige som # # du har lyst til # # # # Gæstebogen er lavet af Nicce # # NG@frac.dk # # # # # #####################################################################
# # Når folk kigger på gBogen første gang har de ikke noget $start_nr, så vi giver dem et nul, # så de starter med det nyeste indlæg. # Hvis en skuummel gæst selv prøver at sætte $start_nr kan den ende med at blive under nul, # når man bruger navigationen. Hvis den er under nul laver vi den også om til nul, så # mysql ikke begynder at brokke sig over ugyldigt input #
# # Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på # men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi # bruge når vi bygger "frem"- og "tilbage"-links. # # Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget # de to forespørgsler. #
$sql = "select id, navn, epost, emne, date_format(tid, '%e/%c %Y, %H:%i') as tiden, besked from gaestebog order by tid desc limit $start_nr, $antal_ad_gangen"; $taeller_sql = "select count(*) as antal from gaestebog";
# # Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen. # Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt. # # Abstraktionerne fra mysql-funktioner.php sørger for alt det grove arbejde og fejlhåndtering - dejligt. #
# # Så går vi igang med at bygge navigationen # Først bruger vi extract til at få $antal ud til behandling. # Vi looper ikke igennem resultatet, da vi ved der kun er een række, # så vi tilgår den direkte ved $optaelling[0]. #
# # Her begynder det egentlig interesante - vi looper os igennem de enkelte indlæg # og skriver dem ud til skærmen. # # Hvis forespørgslen ikke har returneret nogle resultater, springer vi alt dette over. #
if(count($resultat) < 1) {
echo "Der er ingen indlæg i gBogen";
} else {
for($i=0;$i<count($resultat);$i++) {
# # Med extract får vi smidt værdierne i variabler #
extract($resultat[$i]);
# # Vi brugte addslashes() da vi lagde tingene i databasen så for at få det til # at se læseligt ud, fjerne vi dem igen med stripslashes() #
# # For at vi får linjeskift i HTML også, bruger vi nl2br til at skifte alle \n # ud med <br>
$besked = nl2br($besked);
# # Vi laver et simpelt check: Hvis eposten indeholder et snabel-a, så laver # vi det til en mailto: # # Dette er dog ingen garanti for, at eposten er gyldig. #
# # Så er alt klart til browseren og vi spytter en tabel ud med denne besked. # Hvis du vil ændre markant i udseendet af din gæstebog, så er det # i blokken herunder det foregår. Du skal bare beholde de givne navne i # <input>-tagsene. # # Vi hopper lige ud af PHP-mode lidt, så vi er fri for at escape alle gåseøjnene. #
# # Vi hopper tilbage i PHP-mode. # # Her slutter loopet og PHP springer tilbage og går hele turen igennem med den næste # besked. Når der ikke er flere indlæg i denne omgang går PHP videre. #
}
# # Endelig skriver vi frem- og tilbage-links på i bunden af siden også. Har slettet det, fordi at det ser klodset ud. #
# # Her slutter if-else-konstruktionen der fanger, om der er nogle indlæg overhovedet. #
##################################################################### # # # Dette er en simpel Gæste bog som du må bruge lige som # # du har lyst til # # # # Gæstebogen er lavet af Nicce # # NG@frac.dk # # # # # #####################################################################
# # Når folk kigger på gBogen første gang har de ikke noget $start_nr, så vi giver dem et nul, # så de starter med det nyeste indlæg. # Hvis en skuummel gæst selv prøver at sætte $start_nr kan den ende med at blive under nul, # når man bruger navigationen. Hvis den er under nul laver vi den også om til nul, så # mysql ikke begynder at brokke sig over ugyldigt input #
# # Vi henter to ting ud af MySQL - først og fremmest alle de indlæg vi skal kigge på # men også en hurtig optælling af, hvor mange indlæg der er ialt. Det sidste skal vi # bruge når vi bygger "frem"- og "tilbage"-links. # # Der er ingen grund til at åbne databasen endnu - vi skal først lige have bygget # de to forespørgsler. #
$sql = "select id, navn, epost, emne, date_format(tid, '%e/%c %Y, %H:%i') as tiden, besked from gaestebog order by tid desc limit $start_nr, $antal_ad_gangen"; $taeller_sql = "select count(*) as antal from gaestebog";
# # Nu åbner vi databasen, hiver informationerne ud og lukker med det samme igen. # Det er god skik at en forbindelse til database ikke er åben længere end højst nødvendigt. # # Abstraktionerne fra mysql-funktioner.php sørger for alt det grove arbejde og fejlhåndtering - dejligt. #
# # Så går vi igang med at bygge navigationen # Først bruger vi extract til at få $antal ud til behandling. # Vi looper ikke igennem resultatet, da vi ved der kun er een række, # så vi tilgår den direkte ved $optaelling[0]. #
# # Her begynder det egentlig interesante - vi looper os igennem de enkelte indlæg # og skriver dem ud til skærmen. # # Hvis forespørgslen ikke har returneret nogle resultater, springer vi alt dette over. #
if(count($resultat) < 1) {
echo "Der er ingen indlæg i gBogen";
} else {
for($i=0;$i<count($resultat);$i++) {
# # Med extract får vi smidt værdierne i variabler #
extract($resultat[$i]);
# # Vi brugte addslashes() da vi lagde tingene i databasen så for at få det til # at se læseligt ud, fjerne vi dem igen med stripslashes() #
# # For at vi får linjeskift i HTML også, bruger vi nl2br til at skifte alle \n # ud med <br>
$besked = nl2br($besked);
# # Vi laver et simpelt check: Hvis eposten indeholder et snabel-a, så laver # vi det til en mailto: # # Dette er dog ingen garanti for, at eposten er gyldig. #
# # Så er alt klart til browseren og vi spytter en tabel ud med denne besked. # Hvis du vil ændre markant i udseendet af din gæstebog, så er det # i blokken herunder det foregår. Du skal bare beholde de givne navne i # <input>-tagsene. # # Vi hopper lige ud af PHP-mode lidt, så vi er fri for at escape alle gåseøjnene. #
# # Vi hopper tilbage i PHP-mode. # # Her slutter loopet og PHP springer tilbage og går hele turen igennem med den næste # besked. Når der ikke er flere indlæg i denne omgang går PHP videre. #
}
# # Endelig skriver vi frem- og tilbage-links på i bunden af siden også. Har slettet det, fordi at det ser klodset ud. #
# # Her slutter if-else-konstruktionen der fanger, om der er nogle indlæg overhovedet. #
}
# # Og spytter den sidste stump HTML ud. #
echo bund();
?> </TD> </TR> </TABLE>
det skulle ordne, at emnet blir vist ordentligt, og at email virker.
mine tags bliver nu tilføjet i databasen! Men email'en står stadig der hvor emne skal stå. Og der hvor ens navn skal stå, skulle meget gerne laves om til et link. I kan se min tagwall her www.b-teens.dk/gbog.php
# # Denne side er bare en simpel HTML-formular. # Den behøvede egentlig ikke at være en PHP-side, men vi kan jo lige så godt # bruge vores funktioner når vi nu har lavet dem ;) #
# # Hvis du vil have "skrive-siden" til at se anderledes ud kan du bare ændre i HTMLen herunder. #
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.