|
| 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%"> </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>
</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">
<input type="reset" value="Slet felter"></div>
<p>
<br>
<br>
</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();
| |
|
|