Avatar billede vKildevand Nybegynder
29. april 2011 - 11:48 Der er 4 kommentarer og
1 løsning

2 problemer med min kodning

Hej. Jeg ved ikke om jeg fik sat det rigtigt ind i kategorierne - men da jeg har 2 spørgsmål, der rækker både PHP samt MySql, så tager jeg bare den ene, nemlig MySql! Jeg har et "opret bruger"-script, som I kan se her:

<html>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<head><title>hjemmeside</title></head>
<body>

<?php
include("mysql.php");
$submit = $_POST['submit'];

$id = mysql_real_escape_string(htmlspecialchars(addslashes($_POST['id'])));
$brugernavn = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['brugernavn'])));
$kodeord = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['kodeord'])));
$kodeordigen = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['kodeordigen'])));
$navn = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['navn'])));
$email = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['email'])));
$alder = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['alder'])));
$habbonavn = addslashes(htmlspecialchars(mysql_real_escape_string($_POST['habbonavn'])));
$ip = $_SERVER["REMOTE_ADDR"];

if ($submit)
{
if ($brugernavn&&$kodeord&&$kodeordigen&&$navn&&$alder&&$email)
{
if ($kodeord==$kodeordigen)
{
if (strlen($brugernavn)>25||strlen($navn)>25)
{
exit ("<fieldset>

<legend>Der skete en fejl!</legend>
<span style='color:red'>Dit brugernavn eller dit fulde navn er for langt!<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>");
}
if(filter_var($email, FILTER_VALIDATE_EMAIL)!=true)
{
echo "<fieldset>
<legend>Der skete en fejl!</legend>
<span style='color:red'>Den indtastede email-adresse er ikke gyldig!<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>";
die();
}   

if (!is_numeric($alder))
{
echo "<fieldset>
<legend>Der skete en fejl!</legend>
<span style='color:red'>Dette er ikke et tal!<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>";
}
if (strlen($alder)>2)
{
echo "<fieldset>

<legend>Der skete en fejl!</legend>
<span style='color:red'>Din alder er for lang!<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>";
}
$query = mysql_query("SELECT * FROM `brugere` WHERE `brugernavn` = '".$brugernavn."' LIMIT 1");

$antal = mysql_num_rows($query);


if($antal > 0) {

    echo "<fieldset>

<legend>Der skete en fejl!</legend>
<span style='color:red'>Brugernavnet, <b>".$brugernavn."</b>, er allerede i brug! Prøv igen<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>";

}
else
{
mysql_query("INSERT INTO brugere (`brugernavn`, `admin`, `kodeord`, `navn`, `email`, `alder`, `ip`, `online`, `habbonavn`) VALUES ('".$brugernavn."', 'nej' ,'".$kodeord."','".$navn."','".$email."','".$alder."', '".$ip."', 'nej', `$_POST['habbonavn']`)") or die(mysql_error());
die ("<fieldset> $
<legend>Tilykke!</legend><p>
<span style='color:green'><b>Tillykke</b>! Du er nu blevet registeret i vores system! Vi håber du kommer til at nyde opholdet her på sitet!</span>
<p>
<i>Din ip ($ip) er lagret - vi kan se, hvis du misbruger opret-systemet!</i>
</fieldset>");
}
}                                     
else
  echo "<fieldset>

<legend>Der skete en fejl!</legend>
<span style='color:red'>Dine kodeord matcher ikke hinanden!<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>";

}
else
  echo "<fieldset>

<legend>Der skete en fejl!</legend>
<span style='color:red'>Du skal udfylde alle felterne!<br><a href='register.php?=tilbage'>Tilbage</a></span>
</fieldset>";

}
?>

Okay. Når jeg så opretter mig, siger den følgende:

Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/a8699776/public_html/opret_tjek.php on line 74

Og linje 74 er:

mysql_query("INSERT INTO brugere (`brugernavn`, `admin`, `kodeord`, `navn`, `email`, `alder`, `ip`, `online`, `habbonavn`) VALUES ('".$brugernavn."', 'nej' ,'".$kodeord."','".$navn."','".$email."','".$alder."', '".$ip."', 'nej', `$_POST['habbonavn']`)") or die(mysql_error());

Nogle der kan forklare mig fejlen? :s

Mit andet problem:

Den sætter ikke alle tingene rigtigt ind i min db? Gør jeg noget galt?

<?php
session_start();
include("mysql.php");
include("top.php");

        $af = $_SESSION[brugernavn];
        $tid = date('H:i');
        $overskrift = htmlspecialchars(mysql_real_escape_string($_POST['overskrift']));
        $billede = htmlspecialchars(mysql_real_escape_string($_POST['billede']));
        $kategori = htmlspecialchars(mysql_real_escape_string($_POST['kategori']));
        $indhold = mysql_real_escape_string($_POST['indhold']);
    if($overskrift = "" OR $billede = "" OR $indhold = ""):
        echo "Dine felter er tomme.";
    endif;
       
    if(!isset($_SESSION["brugernavn"])){
        header("location: /index.php");
}
else
    {
        mysql_query("INSERT INTO `artikler` (forfatter, indhold, tid, kategori, billede, tjekket, overskrift) VALUES('".$af."', '".$indhold."', '".$tid."', '".$kategori."', '".$billede."', 'nej', '".$overskrift."')") or die(mysql_error());
        echo "Din artikel er netop blevet indsendt, og den bliver tjekket inden snart af en administrator.<br><br><a href='artikel.php' class='c_link'>Tilbage til artiklerne, <b>her</b>.</a>";
       
}
include("bund.php");
?>  .. der var kdoen. ;)
Avatar billede michael_stim Ekspert
29. april 2011 - 12:15 #1
`$_POST['habbonavn']`

Der har du fejlen.
Avatar billede michael_stim Ekspert
29. april 2011 - 12:17 #2
Du kører rundt i forskellige syntax, hold dig til én:

if($overskrift == "" OR $billede == "" OR $indhold == ""){
        echo "Dine felter er tomme.";
    }

Er lig med, skal have 2 ==
Avatar billede vKildevand Nybegynder
29. april 2011 - 13:19 #3
Hej - tak for deltagelsen i tråden.

Jeg forstår ikke helt hvad der er galt med min post til opret-scriptet?

Mit indsend artikel-script virker nu, hvilket jeg er utrolig glad for. Derfor vil jeg bede dig oprette et svar, og forhåbentlig hjælpe mig lidt med det med POST, for så vil du få alle dine points, som du skal have. :-)
Avatar billede michael_stim Ekspert
29. april 2011 - 13:50 #4
Jeg samler ikke på point, ellers tak.

Hvis du mener din post variabel i #1, så er det fordi du ikke adskiller din variabel rigtigt:

mysql_query("INSERT INTO brugere (`brugernavn`, `admin`, `kodeord`, `navn`, `email`, `alder`, `ip`, `online`, `habbonavn`) VALUES ('".$brugernavn."', 'nej' ,'".$kodeord."','".$navn."','".$email."','".$alder."', '".$ip."', 'nej', '".$_POST['habbonavn']."')") or die(mysql_error());
Avatar billede vKildevand Nybegynder
29. april 2011 - 14:04 #5
Det er så i orden. Så giver jeg mig bare selv mine points.

Jeg fik desuden fikset begge dele - jeg takker dig utallige gange! :-)
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
Computerworld tilbyder specialiserede kurser i database-management

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