ugrás a tartalomhoz

kép és szöveg tárolása adatbázisban

SzaLacy · 2008. Feb. 13. (Sze), 18.54
üdv mindenki..
kis segítségre szorulok.. van 1 képfeltötőm és 1 listázó php scriptem. az a problémám, h az adatbázisban NEM tárolja el nekem a szöveget,csak a kép linkjét.. olyan oldalt szeretnék készíteni, h feltöltök 1 képet, és vele 1 megjegyzést is, és ezt adatbázisban tárolja.. nagyából kész.. csak a szöveget nem tárolja.. segítsetek..
képfeltötő kódja:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
if (isset($_POST['kepek'])){

$maxfilesize = 120000000; // A maximum file méret => 204800 = 200kb
$filedir = 'upload'; //Itt megadhatjuk a mappa elérését, ahova mentjük a képet. 777 legyen a mappa attribútuma

$size = $_FILES['userfile']['size'];
$type = $_FILES['userfile']['type'];
//Engedélyezett kép formátumok
if (($type == "image/jpg") or ($type == "image/gif") or ($type == "image/jpeg") or ($type == "image/png")){

if($_FILES['userfile']['size'] < $maxfilesize) {
if (is_uploaded_file($_FILES['userfile']['tmp_name'])) {
if(!file_exists($filedir . '/' . basename($_FILES['userfile']['name']))){
if(move_uploaded_file($_FILES['userfile']['tmp_name'],$filedir . '/'.basename($_FILES['userfile']['name']))){
$kapcsolat = mysql_connect("localhost", "root",""); //kapcsolódás
$tabla="cdcol";
mysql_select_db($tabla); //adatbézis kiválasztás
mysql_query("INSERT INTO kepek (link,szoveg) VALUES ('http://localhost/lac_proba/proba/upload/".$_FILES['userfile']['name']."','".$_GET['szoveg']."')"); // a kepek táblába felvesszük a kép linkjét és a leíró szöveget
mysql_close($kapcsolat);
print "<div style='color:#006600;'>A file feltöltése sikerült!</div>";

echo '<br/><img src="upload/'.$_FILES['userfile']['name'].'" alt="" border="1" /><br/>';
echo'A kép elérési útvonala: http://localhost/lac_proba/proba/upload/'.$_FILES['userfile']['name'];
echo'<br/>a felvitt szöveg: '.$szoveg;
}
}else{
echo '<div style="color:#FF0000;">Ezen a néven már van kép tárolva!</div>';
}
}//is_uploaded
}else{
echo '<div style="color:#FF0000;">A kép mérete meghaladja a megengedett méretet!</div>';
}
}else{
echo '<div style="color:#FF0000;">A kép formátum nem megfelelo!</div>';
}
}

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Kép feltöltés</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>

<body>
<form enctype="multipart/form-data" action="kepfel_j.php" method="post">
<br>
<br>
<div align="center">
<p>&nbsp; </p>
<table width="400" border="1" cellspacing="1" cellpadding="2">
<tr>
<td>Kép feltöltése:</td>
<td><input name="userfile" type="file" /></td>
</tr>
<tr>
<td>K&eacute;p le&iacute;r&aacute;sa: </td>
<td><textarea name="szoveg" cols="20" rows="6"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="kepek" value="OK" /></td>
</tr>
</table>
<p>&nbsp; </p>
</div>

</form>


</body>
</html>
</body>
</html>

listázó kódja:

<?php

$kapcsolat = mysql_connect("localhost", "root",""); //kapcsolódás
$tabla="cdcol";
mysql_select_db($tabla); //adatbézis kiválasztás
print "<table>";

$dat= mysql_query("SELECT * FROM kepek");
while ($dat1= mysql_fetch_array($dat))
{
print "<tr><td><img src='".$dat1['link']."'></td><td>".$dat1['szoveg']."</td></tr>";
}
print "</table>";
mysql_close($kapcsolat);

?>

adatbázis létrehozása(sql kód):
CREATE TABLE `kepek` (
`id` bigint(20) NOT NULL auto_increment,
`link` varchar(100) NOT NULL default '',
`szoveg` varchar(1000) NOT NULL default '',
PRIMARY KEY (`id`)
);

mysql_query("INSERT INTO kepek (link,szoveg) VALUES ('http://localhost/lac_proba/proba/upload/".$_FILES['userfile']['name']."','".$_GET['szoveg']."')");

ezt a réészt kellene segíteni kiavítani..
millió köszönet
 
1

előbb még: sql injection

lacy · 2008. Feb. 14. (Cs), 11.27
Kérlek olvass utána a sql injection módszernek és tégy valamit ellene, mert így pikk-pakk feltörhető a lapod. Nem állítanám, hogy átlátom a kódot, de egyik helyen POST van, a másik helyen GET. Visszatérve az injectionre...

$_GET['szoveg'] helyett...mysql_real_escape_string(htmlspecialchars($_GET['szoveg'])) -t ajánlom.
2

köszönet

SzaLacy · 2008. Feb. 14. (Cs), 16.39
köszönöm a segítséget!! végűlis nem azt a kodot használtam, hanem .$_POST['szoveg'].-re javítottam! és így megy!! köszönöm!!