Avatar billede dytti Novice
01. december 2008 - 13:25 Der er 5 kommentarer og
1 løsning

syntax fejl i php kode

Jeg har en registreringsform som driver mig "nuts"
Jeg bliver ved med at få denne fejlmeddelelse, og kan bare ikke finde fejlen. Kan nogen hjælpe?

Error : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 2

(bruger phpMyAdmin 2.9.2-Debian-1.one.com1)



<?php
$dbhost = 'localhost';
$dbuser = 'bruger';
$dbpass = 'pass';   
$dbname = 'dbnavn';

// make a connection to mysql here
@$conn = mysql_connect ($dbhost, $dbuser, $dbpass);
@$conn = mysql_select_db ($dbname);
if(!$conn){
    die( "Beklager... kan ikke forbinde til databasen i øjeblikket.");
}

// Fejlgenerering
function errors($error){
if (!empty($error))
{
$i = 0;
while ($i < count($error)){
echo "<p><span class=\"warning\">".$error[$i]."</span></p>\n";
$i ++;}
}
}

//Kør denne kode hvis formen er udfyldt
if (isset($_POST['submit']))
{

// Tjek for tomme felter
$priv_fnavn = trim($_POST['priv_fnavn']);
if (strlen($priv_fnavn) < 2) {
$error[] = 'Fornavn skal være mellem 2 og 20 tegn.';
}
if (strlen($priv_fnavn) > 20) {
$error[] = 'Fornavn skal være mellem 2 og 20 tegn.';
}


// Tjek for tomme felter
$priv_enavn = trim($_POST['priv_enavn']);
if (strlen($priv_enavn) < 3) {
$error[] = 'Efternavn skal være mellem 3 og 20 tegn.';
}
if (strlen($priv_enavn) > 20) {
$error[] = 'Efternavn skal være mellem 3 og 20 tegn.';
}

// Tjek for tomme felter
$priv_adresse = trim($_POST['priv_adresse']);
if (strlen($priv_adresse) < 3) {
$error[] = 'Adressen skal være mellem 3 og 20 tegn.';
}
if (strlen($priv_adresse) > 20) {
$error[] = 'Adressen skal være mellem 3 og 20 tegn.';
}

//Tjek for tomme felter
$priv_zip = trim($_POST['priv_zip']);
if (strlen($priv_zip) < 4) {
$error[] = 'Postnummer skal være på 4 tal.';
}
if (strlen($priv_zip) > 20) {
$error[] = 'Potnummer skal væer på 4 tal.';
}

// Tjek for tomme felter
$priv_by = trim($_POST['priv_by']);
if (strlen($priv_by) < 2) {
$error[] = 'Bynavn skal være mellem 2 og 20 tegn.';
}
if (strlen($priv_by) > 20) {
$error[] = 'Bynavn skal være mellem 2 og 20 tegn.';
}

// Tjek for gyldig mail
$priv_mail = $_POST['priv_mail'];
$pattern = '/^[^@]+@[^\s\r\n\'";,@%]+$/';
if (!preg_match($pattern, trim($priv_mail))) {
$error[] = 'Indtast venligst en gyldig mailadresse';
}

// Tjek om mail er i brug
if (!get_magic_quotes_gpc()) {
$_POST[] = addslashes($_POST['priv_mail']);
}

$emailcheck = $_POST['Priv_mail'];
$emailcheck1 = mysql_query("SELECT priv_mail FROM priv_kontakt WHERE priv_mail = '$emailcheck'")
or die(mysql_error());
$emailcheck2 = mysql_num_rows($emailcheck1);

//Giv fejl hvis mail eksistere
if ($emailcheck2 != 0) {
$error[]
= 'Beklager, mailadressen <b>'.$_POST['priv_mail'].'</b> er
allerede i brug. Vælg venligst en anden mailadresse.';
}


// Tjek for tomme felter
$priv_tlf = trim($_POST['priv_tlf']);
if (strlen($priv_tlf) < 8) {
$error[] = 'Telefonnummer skal være på 8 tal.';
}
if (strlen($priv_tlf) > 8) {
$error[] = 'Telefonnummer skal være på 8 tegn.';
}


// Tjek for tomme felter
$password = trim($_POST['password']);
if (strlen($password) < 5) {
$error[] = 'Kodeord skal være mellem 5 og 10 tegn.';
}
if (strlen($password) > 10) {
$error[] = 'Kodeord skal være mellem 5 og 10 tegn.';
}

//
$password2 = trim($_POST['password2']);
if (strlen($password2) < 5) {
$error[] = 'Gentag Kodeord skal være mellem 5 og 10 tegn.';
}
if (strlen($password2) > 10) {
$error[] = 'Gentag Kodeord skal være mellem 5 og 10 tegn.';
}

// Tjek om begge password passer sammen
if ($_POST['password'] != $_POST['password2']) {
$error[] = 'Kodeord passer ikke sammen.';
}


// Hvis alt er ok fortsættes
if (!$error ) {



//Tilføj variabler fra data i formen

$priv_fnavn = $_POST['priv_fnavn'];
$priv_enavn = $_POST['priv_enavn'];
$priv_adresse = $_POST['priv_adresse'];
$priv_zip = $_POST['priv_zip'];
$priv_by = $_POST['priv_by'];
$priv_mail = $_POST['priv_mail'];
$priv_tlf = $_POST['priv_tlf'];
$password = $_POST['password'];


// Første bogstav stort resten små
$priv_fnavn = ucfirst(strtolower($priv_fnavn));
$priv_enavn = ucfirst(strtolower($priv_enavn));


if(!get_magic_quotes_gpc())
{
$priv_fnavn = addslashes($priv_fnavn);
$priv_enavn = addslashes($priv_enavn);
$priv_adresse = addslashes($priv_adresse);
$priv_zip = addslashes($priv_zip);
$priv_by = addslashes($priv_by);
$priv_mail = addslashes($priv_mail);
$priv_tlf = addslashes($priv_tlf);
$password = addslashes($password);

}


// Forhindre skadelig kode og sql injection
$priv_fnavn = mysql_real_escape_string($priv_fnavn);
$priv_enavn = mysql_real_escape_string($priv_enavn);
$priv_adresse = mysql_real_escape_string($priv_adresse);
$priv_zip = mysql_real_escape_string($priv_zip);
$priv_by = mysql_real_escape_string($priv_by);
$priv_mail = mysql_real_escape_string($priv_mail);
$priv_tlf = mysql_real_escape_string($priv_tlf);
$password = mysql_real_escape_string($password);



// Fjern al kode fra data
$priv_fnavn = strip_tags($priv_fnavn);
$priv_enavn = strip_tags($priv_enavn);
$priv_adresse = strip_tags($priv_adresse);
$priv_zip = strip_tags($priv_zip);
$priv_by = strip_tags($priv_by);
$priv_mail = strip_tags($priv_mail);
$priv_tlf = strip_tags($priv_tlf);
$password = strip_tags($password);


//RFørste bogstav stort resten små
$priv_fnavn = ucwords(strtolower($priv_fnavn));
$priv_enavn = ucwords(strtolower($priv_enavn));
$priv_adresse = ucwords(strtolower($priv_adresse));
$priv_by = ucwords(strtolower($priv_by));
$priv_mail = strtolower($priv_mail);


// Sæt i databasen

$insert1 = "INSERT INTO priv_kontakt (priv_fnavn, priv_enavn, priv_adresse, priv_zip, priv_by, priv_mail, priv_tlf, password)
VALUES ('$priv_fnavn', '$priv_enavn', '$priv_adresse', '$priv_zip', '$priv_by', '$priv_mail', '$priv_tlf', md5('$password')";
$result1 = mysql_query($insert1) or die('Error : ' . mysql_error());


//send email
$to = "$priv_mail";
$subject = "XXXXXXX.dk...Kontakt info";
$body
= "Kære $priv_fnavn

Tak for din tilmelding hos XXXXXX.dk.
Her er dine data.

Navn:        $priv_fnavn $priv_enavn
Adresse:    $priv_adresse
Postnr:        $priv_zip
By:            $priv_by
Tlf.nr:        $priv_tlf
Kodeord:    $priv_pass

Denne mail er sendt til dig for at verificerer,
at det er dig, og ikke en anden person, som har oprettet
kontaktinformationer hos xxxxxx.dk.

Klik venligst på nedenstående link for at komme videre
med oprettelse af dit projekt.
http://www.xxxxxx.dk/xxxx/layout.php

Med venlig hilsen
xxxxxx.dk\n\n";

if(mail($to, $subject, $body)){}


echo "<h2>Kontaktinfo</h2>";
echo "<p>Tak... <b>$priv_fnavn</b> Du er blevet registreret, og kan nu gå videre.</p>";


} // slut validering

} // slut hvis sendt


// Vis fejl
errors($error);


?>
Avatar billede michael_stim Ekspert
01. december 2008 - 13:29 #1
Prøv at skrive dine SQL'er ud. Men det kunne evt. være denne:
VALUES ('$priv_fnavn', '$priv_enavn', '$priv_adresse', '$priv_zip', '$priv_by', '$priv_mail', '$priv_tlf', md5('$password')";

md5('$password')
Skal nok være i '
Avatar billede mcgoat Nybegynder
01. december 2008 - 13:48 #2
yeah. prøv at echo din $insert1 ud og se om den ser rigtig ud. Er din DB opbygget til de rigtige data?
Avatar billede dytti Novice
01. december 2008 - 13:53 #3
mein gott
Hvor svært kan det være :-)

Det var lige i øjet. (begge to)
Min db var ikke opbygget rigtigt. Jeg havde kaldt den "priv_pass" og ikke "password".
og md5('$password') var også galt.

I har reddet min dag. Lægger i et svar, så bukker og takker jeg.
Avatar billede mcgoat Nybegynder
01. december 2008 - 13:54 #4
Kender godt det man kigger sig blind, så er sku glad for at kunne hjælpe :-)
Avatar billede michael_stim Ekspert
01. december 2008 - 14:00 #5
Ellers tak, samler ikke på point ;o)
Avatar billede dytti Novice
01. december 2008 - 14:30 #6
jeg bukker og takker :-)
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

IT-JOB

LINK Mobility

Support Specialist

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingschef til GDPR & Tech Regulation

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Nye kolleger søges til IT Stab i Forsvaret

Politiets Efterretningstjeneste

CNE-specialist til PET`s indhentningsafdeling