Avatar billede henrik_veb Nybegynder
23. januar 2008 - 00:55 Der er 6 kommentarer og
1 løsning

Hvor går det galt?

Jeg sidder og roder med dette meget simple PHP script, som skulle fungere som en slags blog.

Når jeg trykker send sker der ikke noget, intet bliver gemt i databasen/tabellen.

Kan nogen se hvor problemet er?

Jeg har fjernet diverse fortrolige oplysninger (bruger, kodeord m.m.) så det er ikke der fejlen ligger.


<html>
<head><title>blog</title></head>
<body>
<?
$db = mysql_connect("localhost","bruger","kodeord");
mysql_select_db("min_db", $db);
if ($skriv){
    $besked = str_replace("\n","<BR>", $besked);
    $dato_array = getdate();
    $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"];
mysql_query("INSERT INTO thai_blog (dato, overskrift, besked) VALUES ('$dato','$overskrift','$besked')");
}
?>
<center>
<form method=POST action=<? echo $PHP_SELF; ?>>
<input type=hidden name=skriv value=1>
overskrift: <input type=text name=overskrift><br>
<textarea name=besked cols=30 rows=5></textarea><br>
<input type=submit value="send">
</FORM>
<BR><BR>
<TABLE>
<?
$foresp = mysql_query("SELECT dato, overskrift, besked FROM thai_blog ORDER BY id DESC");
while($data = mysql_fetch_row($foresp)){
    echo "<TR><TD VALIGN= TOP>";
    echo "$data[0] - $data[1]";
    echo "</TD><TD VALIGN=TOP>$data[2]</TD></TR>";
}
?>
</TABLE>
</CENTER>
</BODY>
</HTML>

Siden ligger her: http://thailand.veb.dk/test.php

Og jeg har prøvet med en simpel side med en echo "hej"; som fungerer fint, hvilket må betyde at PHP kører ok på serveren?

På forhånd tak :-)
Avatar billede nielle Nybegynder
23. januar 2008 - 06:52 #1
Prøv at rette:

if ($skriv){

til:

if ($_POST['skriv']){
Avatar billede henrik_veb Nybegynder
23. januar 2008 - 16:14 #2
Det hjalp, nu gemmer den dato'en, men den gemmer ikke felterne overskrift og besked.

Jeg har tjekket via phpMyAdmin at felterne er tomme der.
Avatar billede nielle Nybegynder
23. januar 2008 - 18:40 #3
Du er sikkert "ramt" af at PHP versionen er blevet opdateret til en version, som er mere sikker end den koden er skrevet til! Det skal du dog bare være glad for, og så i øvrigt lære at skrive koden på en mere sikker måde.

F.eks. kan man ikke oprette en form med et input-felt med navnet "overskrift" og så forvente at der dukker en variabel op som hedder $overskrift og har indholdet fra feltet. I stedet skal du specifikt tilgå den som $_POST['overskrift']. Det var faltisk akkurat det samme problem som med 'skriv' feltet.

Din kode skal derfor ændres til:

<?
$db = mysql_connect("localhost","bruger","kodeord");
mysql_select_db("min_db", $db);
if (isset($_POST['skriv']) && $_POST['skriv'] == '1') {
    $dato_array = getdate();
    $dato = $dato_array["mday"] . "/" . $dato_array["mon"] . "-" . $dato_array["year"];

    $overskrift = $_POST['overskrift'];
    $overskrift = mysql_real_escape_string($overskrift);

    $besked = $_POST['besked'];
    $besked = mysql_real_escape_string($besked);
    $besked = nl2br($besked);

    mysql_query("INSERT INTO thai_blog (dato, overskrift, besked) VALUES ('$dato', '$overskrift', '$besked')");
}
?>


Så burde PHP koden være i orden og rimelig sikker imod lede hacker-typer.

Du skal dog også lige gennem din HTML kode. Attributter til HTMLtags skal være omgivet med enten '- eller "-tegn Derfor skal sådan noget som:

<form method=POST action=<? echo $PHP_SELF; ?>>
<input type=hidden name=skriv value=1>
overskrift: <input type=text name=overskrift><br>
<textarea name=besked cols=30 rows=5></textarea><br>
<input type=submit value="send">
</FORM>

rettes til:

<form method="POST" action="<? echo $PHP_SELF; ?>">
<input type="hidden" name="skriv" value="1">
overskrift: <input type="text" name="overskrift"><br>
<textarea name="besked" cols="30" rows="5"></textarea><br>
<input type="submit" value="send">
</form>


PS: Hvis jeg var dig ville jeg nok genoverveje kvaliteten af de tutorials jeg havde brugt. :^|
Avatar billede henrik_veb Nybegynder
24. januar 2008 - 00:09 #4
Det er super, nu virker det. Normalt leger jeg med ASP, men kunne godt tænke mig at lære PHP. Scriptet kommer en ret så gammel "dummie" bog.

Normalt bruger jeg også attributter til htmltags, men det var ikke brugt i eksemplet.

Kom med et svar, så får du dine velfortjente point.
Avatar billede nielle Nybegynder
24. januar 2008 - 15:33 #5
Svar :^)
Avatar billede nielle Nybegynder
24. januar 2008 - 15:44 #6
Du skal da bare holde fast på din HTML-viden fra ASP miljøet.

I øvrigt gælder der lille oversættelse mellem ASP og PHP:

ASP: Request.QueryString('ditFeltNavn')
PHP: $_GET['ditFeltNavn']

ASP: Request.Form('ditFeltNavn')
PHP: $_POST['ditFeltNavn']

ASP: Request('ditFeltNavn') - lovlig ASP, men alligevel Fy-fy!
PHP: $_REQUEST[''] - muligvis lovligt PHP, men også Fy-fy!
Avatar billede henrik_veb Nybegynder
24. januar 2008 - 18:07 #7
Okay, endnu en gang mange tak.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester