mboost-dp1

Hjælp til PHP


Gå til bund
Gravatar #1 - PHP-Ekspert Thoroughbreed
8. jul. 2013 15:34
Jeg indrømmer blankt at jeg er PHP idiot >_<

Følgende virker IKKE
<?php

$host="Newz"; // Host name
$username="Newz"; // Mysql username
$password="Newz"; // Mysql password
$db_name="Newz"; // Database name
$tbl_name="e-mail"; // Table name

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

// Get values from form
$username=$_POST['1'];
$password=$_POST['2'];
$email=$_POST['3'];
$text=$_POST['4'];

// Insert data into mysql
$sql="INSERT INTO $tbl_name(name, email, subject, text)VALUES('$username', '$password', '$email', '$text')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "YAY";
}

else {
echo "ERROR";
}
?>

<?php
// close connection
mysql_close();
?>


Følgende VIRKER


<?php

$host="Newz"; // Host name
$username="Newz"; // Mysql username
$password="Newz"; // Mysql password
$db_name="Newz"; // Database name
$tbl_name="web_members"; // Table name

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

// Get values from form
$username=$_POST['1'];
$password=$_POST['password'];
$email=$_POST['email'];

// Insert data into mysql
$sql="INSERT INTO $tbl_name(username, password, email)VALUES('$username', '$password', '$email')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='insert.php'>Back to main page</a>";
}

else {
echo "ERROR";
}
?>

<?php
// close connection
mysql_close();
?>



Tabellen er selvfølgelig oprettet - jeg synes at have dobbelttjekket det hele, nærmest skrevet af bit - by - bit, men den øverste returnerer hele tiden i "ERROR" >_<
Gravatar #2 - PHP-Ekspert Thoroughbreed
8. jul. 2013 15:37
Bonusinfo:

Hvis jeg tager <form></form> i den der ikke virker, og sætter den ind på en blank side, og bruger den der virker, så får jeg "success" - selvfølgelig uden data, men stadig?

tl;dr

Min <form> virker fint nok o_O
Gravatar #3 - Barkane
8. jul. 2013 15:39
Thoroughbreed (1) skrev:
Jeg indrømmer blankt at jeg er PHP idiot >_<

Følgende virker IKKE
<?php

$host="Newz"; // Host name
$username="Newz"; // Mysql username
$password="Newz"; // Mysql password
$db_name="Newz"; // Database name
$tbl_name="e-mail"; // Table name

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

// Get values from form
$username=$_POST['1'];
$password=$_POST['2'];
$email=$_POST['3'];
$text=$_POST['4'];

// Insert data into mysql
$sql="INSERT INTO $tbl_name(name, email, subject, text)VALUES('$username', '$password', '$email', '$text')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "YAY";
}

else {
echo "ERROR";
}
?>

<?php
// close connection
mysql_close();
?>


Følgende VIRKER


<?php

$host="Newz"; // Host name
$username="Newz"; // Mysql username
$password="Newz"; // Mysql password
$db_name="Newz"; // Database name
$tbl_name="web_members"; // Table name

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

// Get values from form
$username=$_POST['1'];
$password=$_POST['password'];
$email=$_POST['email'];

// Insert data into mysql
$sql="INSERT INTO $tbl_name(username, password, email)VALUES('$username', '$password', '$email')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful".
if($result){
echo "Successful";
echo "<BR>";
echo "<a href='insert.php'>Back to main page</a>";
}

else {
echo "ERROR";
}
?>

<?php
// close connection
mysql_close();
?>



Tabellen er selvfølgelig oprettet - jeg synes at have dobbelttjekket det hele, nærmest skrevet af bit - by - bit, men den øverste returnerer hele tiden i "ERROR" >_<


Prøv at ændre e-mail i $tbl_name="e-mail"; // Table name til email og prøv.

link

Edit:
php kan ikke lide "-".
Gravatar #4 - PHP-Ekspert Thoroughbreed
8. jul. 2013 15:52
Barkane (3) skrev:
Prøv at ændre e-mail i $tbl_name="e-mail"; // Table name til email og prøv.

link

Edit:
php kan ikke lide "-".


Sådan noget lort ... Tusind tak :D

- ville dog mene at jeg burde få en fejl der, eller ikke have lov til at lave en db med en bindestreg >_<

Rookie mistake, jeg gi'r en bajer hvis du kommer i nærheden af Tønder!
Gravatar #5 - m910q
8. jul. 2013 16:07
Lige FYI: Din kode er meget åben overfor SQL injections...
Gravatar #6 - PHP-Ekspert Thoroughbreed
8. jul. 2013 16:32
#5

Do tell!..

Also, koderne er hashed, men hvordan krydrer jeg med salt?
Gravatar #7 - markjensen
8. jul. 2013 17:49
Du skal bruge prepared statements: link

Ideen er at du først angiver dine værdier med ?-tegn, og så bagefter sætter du værdier ind. Dette gør at man ikke kan være kreativ med sit brugernavn (fx noget ala '; DROP TABLE ...)
Gravatar #8 - TheAvatar
8. jul. 2013 18:01
#7's løsning er sikkert korrekt, men virker lidt mere avanceret, hvis man ikke lige er super PHP/SQL haj.

Kan I bekræfte at man kunne beskytte koden tilstrækkeligt mod SQL injections vha følgende:
$username=$_POST['1'];

til
$username=mysql_real_escape_string($_POST['1']);


Edit: Newz nægter at smide det semikolon op på linjen før, men det er én linje.

Edit #2: Hver gang jeg bare trykker gem, uden at rette noget, så ændrer min post sig. Spændende - nu blev den vist rigtig?
Gå til top

Opret dig som bruger i dag

Det er gratis, og du binder dig ikke til noget.

Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.

Opret Bruger Login