/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Hjælp er det min server eller mig?
Fra : Jan


Dato : 04-10-06 18:36

Hej
Jeg har forsøgt med $navn = $_POST['navn'] der kommer intet ind i $navn
det er som om $navn = $_POST['navn'] stopper scriptet.
Vis kilde kommer med følgende html:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html;
charset=iso-8859-1"></HEAD>
<BODY></BODY></HTML>

Min kode:

Motager:

<?

$host="localhost"; // Host name
$username="******"; // Mysql username
$password="*****"; // Mysql password
$db_name="*******"; // Database name

$navn=$_POST['navn']
$datetime=date("Y-m-d"); //date time

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect
server ");
mysql_select_db("$db_name")or die("cannot select DB");

$sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
VALUES (NULL, \'?\', \'?\', \'?\', \'?\', \'2006-10-04\');';
$result=mysql_query($sql);

//check if query successful
if($result){
echo "Successful";
echo "<BR>";
}

else {
echo "ERROR";
}

mysql_close();
?>

Formen:

<form id="form1" name="form1" action="gem.php" method="post">
<p style="line-height: 150%">&nbsp;</p>
<div style="position: absolute; width: 384px; height: 171px; z-index: 1;
left: 157px; top: 54px" id="Formular">
<input type="text" name="navn" size="50" tabindex="1" value="navn">*
<input type="text" name="mail" size="50" tabindex="2" value="mail">
<input type="text" name="emne" size="50" tabindex="3" value="emne">*
<textarea rows="5" name="tekst" cols="40"
tabindex="4">tekst</textarea>*</div>
<p><br>
&nbsp;</p>
<div style="position: absolute; width: 62px; height: 172px; z-index: 3;
left: 90px; top: 55px" id="lag2">
<font size="4">Navn: <br>
E-Mail:<br>
Emne:<br>
Tekst:
</font></div>
<div style="position: absolute; left: 216px; top: 226px; width: 260px;
height: 36px; z-index: 2" id="lag1">
<input type="submit" value="Post indlæg">&nbsp;&nbsp;&nbsp;&nbsp;
<input type="reset" value="Slet felter"></div>
<p>
<br>
<br>
&nbsp;
</p>
</form>

Mvh Jan

--------------------------------------------------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 2969 spam-mails
Betalende brugere får ikke denne besked i deres e-mails.
Hent en gratis SPAMfighter her.



 
 
Benny Nissen (04-10-2006)
Kommentar
Fra : Benny Nissen


Dato : 04-10-06 20:30

Jan wrote:

> $navn=$_POST['navn']

Der mangler et ; i slutningen af linien.

> Jeg beskyttes af den gratis SPAMfighter til privatbrugere.

Slet den eller betal. Så slipper vi andre for at se på det lort.

--
Benny

Martin (05-10-2006)
Kommentar
Fra : Martin


Dato : 05-10-06 13:26

Jan wrote:
> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
> <HTML><HEAD>
> <META http-equiv=Content-Type content="text/html;
> charset=iso-8859-1"></HEAD>
> <BODY></BODY></HTML>

Dette er standard, når PHP returner en PHP error, men da din server
åbenbart er konfigureret til ikke at vise fejl, så får man bare en tom
html side.

> <?

Brug så vidt som overhovedet muligt altid:
<?php
til at starte med - det koster lidt mere tid at skrive, men så er man
100% sikker på at det virker.
<? kan man kun skrive på servere, hvor shorttag_open = on, og det er
ikke på alle det er det.

Du kan også prøve at sætte
error_reporting(E_ALL); i starten, så vil alle php fejl komme, og dette
giver som reglen altid en lille hjælp :)

>
> $host="localhost"; // Host name
> $username="******"; // Mysql username
> $password="*****"; // Mysql password
> $db_name="*******"; // Database name
>
> $navn=$_POST['navn']

Her er der så en fejl, som du ville have fået smidt i hovedet hvis du
havde brugt error_reporting(E_ALL);
Hint: Du mangler en ;

> $result=mysql_query($sql);

Når du bruger mysql_query, så skriv altid OR DIE(mysql_error());
bagefter, så får man database fejlene smidt i hovedet, hvis der skulle
være nogle.
Fx
$result=mysql_query($sql) OR DIE (mysql_error());

Jan (05-10-2006)
Kommentar
Fra : Jan


Dato : 05-10-06 18:55

Hej
Jeg har prøvet lidt af hvert og tror at det er i
$navn1=$_POST["navn"];
er
$navn1=peter
og ikke
\'peter\'
skal det ikke være det?



$sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
VALUES (NULL, \'?\', \'?\', \'?\', \'?\', \'2006-10-04\');';

Ovenstående sender fint til mysql-databasen
men hvordan gør jeg sætter jeg variablen ind $navn1 (med flere)?

Mvh Jan

--------------------------------------------------------------------------------
Jeg beskyttes af den gratis SPAMfighter til privatbrugere.
Den har indtil videre sparet mig for at få 2999 spam-mails
Betalende brugere får ikke denne besked i deres e-mails.
Hent en gratis SPAMfighter her.



Thorkil Olesen (05-10-2006)
Kommentar
Fra : Thorkil Olesen


Dato : 05-10-06 23:36

Jan <jan.h@rnet_nospam.dk> wrote:

> Hej
> Jeg har prøvet lidt af hvert og tror at det er i
> $navn1=$_POST["navn"];
> er
> $navn1=peter
> og ikke
> \'peter\'
> skal det ikke være det?

Umiddelbart nej, men jeg er ikke sikker på, jeg forstår, hvad du
mener...

> $sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
> VALUES (NULL, \'?\', \'?\', \'?\', \'?\', \'2006-10-04\');';
>
> Ovenstående sender fint til mysql-databasen
> men hvordan gør jeg sætter jeg variablen ind $navn1 (med flere)?

Her er 2 fejl:

Den første fejl er, at du forsøger at definere en "prepared statement".
Det er ikke understøttet af PHP-biblioteket "mysql", som du bruger. Hvis
du vil det, skal du i stedet bruge PHP-biblioteket "mysqli" ("i" for
"improved"), men det kræver, at det er tilgængeligt i din udgave af PHP.

Den anden fejl er, at hvis du faktisk brugte "mysqli" og faktisk vil
lave en "prepared statement", så skal spørgsmålstegnene ikke sættes i
gåseøjne. Den præcise syntaks må du finde i dokumentationen til PHP.

Uden at bruge en "prepared statement" skal værdierne sættes direkte ind
i SQL-koden. Hvis værdierne f.eks. ligger i variablene $navn, $mail,
$emne, $tekst:

$sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
`dato`)
VALUES (NULL, \'$navn\', \'$mail\', \'$emne\', \'$tekst\',
\'2006-10-04\')';

Jeg prøver normalt at undgå escape'de gåseøjne, så jeg ville bruge
dobbelt-gåseøjne yderst. (Det er udelukkende æstetisk.)

$sql = "INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
`dato`)
VALUES (NULL, '$navn', '$mail', '$emne', '$tekst', '2006-10-04')";

--
Thorkil Olesen,
Hanstholm.

Peter Brodersen (06-10-2006)
Kommentar
Fra : Peter Brodersen


Dato : 06-10-06 11:32

On Fri, 6 Oct 2006 00:35:52 +0200,
slet.dette.thorkil.og.dette@pip.dknet.dk (Thorkil Olesen) wrote:

>$sql = 'INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
>`dato`)
>VALUES (NULL, \'$navn\', \'$mail\', \'$emne\', \'$tekst\',
>\'2006-10-04\')';
>
>Jeg prøver normalt at undgå escape'de gåseøjne, så jeg ville bruge
>dobbelt-gåseøjne yderst. (Det er udelukkende æstetisk.)
>
>$sql = "INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`,
>`dato`)
>VALUES (NULL, '$navn', '$mail', '$emne', '$tekst', '2006-10-04')";

Ikke helt - det er mere end æstetik.

Ved enkelt-gåseøjne vil variable ikke blive interpoleret. Der er
forskel på
   print "Foo '$bar' baz";
og
   print 'Foo \'$bar\' baz';

--
- Peter Brodersen
Kendt fra Internet

Thorkil Olesen (08-10-2006)
Kommentar
Fra : Thorkil Olesen


Dato : 08-10-06 15:51

Peter Brodersen <usenet2006@ter.dk> wrote:

> Ved enkelt-gåseøjne vil variable ikke blive interpoleret. Der er
> forskel på
> print "Foo '$bar' baz";
> og
> print 'Foo \'$bar\' baz';

Du har selvfølgeligt ret. Det er ligesom i shell-programmering. Jeg
bruger derfor altid dobbelt-gåseøjne til PHP og enkelt-gåseøjne til HTML
og SQL.

--
Thorkil Olesen,
Hanstholm.

Jan (06-10-2006)
Kommentar
Fra : Jan


Dato : 06-10-06 15:46

Hej
det endte med følgende løsning, og den VIRKER.
Tak for Jeres forsøg på hjælp.
mvh Jan

$datetime=date("Y-m-d"); //date time
$navn=addslashes($_POST["navn"]);
$mail=addslashes($_POST["mail"]);
$emne=addslashes($_POST["emne"]);
$tekst=addslashes($_POST["tekst"]);

// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect
server ");
mysql_select_db("$db_name")or die("cannot select DB");
$nr1="'";
$nr2="','";
$nr3=');';
$nr4='INSERT INTO `gbog` (`id`, `Navn`, `Mail`, `Emne`, `Tekst`, `dato`)
VALUES (NULL,';

$nr6=" $nr4 $nr1 $navn $nr2 $mail $nr2 $emne $nr2 $tekst $nr2 $datetime
$nr1 $nr3";

$sql = " $nr6";
$result=mysql_query($sql);
//check if query successful
if($result){
echo "Tak for dit bidrag.";
echo "<BR>";
echo "<p><a href='gaestebog.php'>Tilbage</a></p>";
}

else {
echo "ERROR";
}

mysql_close();



Søg
Reklame
Statistik
Spørgsmål : 177501
Tips : 31968
Nyheder : 719565
Indlæg : 6408522
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste