PHP value
 
Kloner 29. dec 2013 13:36:34 Pridružen od:
29. dec 2013
2 objav
0 0 0
#1

Pozdravljeni!



Naj na začetku omenim, da sem še dokaj svež glede PHP-ja, zato vam bo moja težava mogoče zgledala banalno. Zaplete se mi namreč pri spodnji zadevi:


<?php
$dbLink = new mysqli('***', '***', '***', ***');
if(mysqli_connect_errno()) {
die("MySQL connection failed: ". mysqli_connect_error());
}
$sql = "SELECT ImeAlbuma, Datum, UstAlbum FROM m1000575albumi WHERE IDa= {$_GET['
IDa']}";

$result = $dbLink->query($sql);

if($result) {

if($result->num_rows == 0) {
echo '
<p><g>Album je prazen.</g></p>';
}
else
{
while($row = $result->fetch_assoc()) {
echo
"<div class='
img'>
<div class='
naslov'>album | {$row['ImeAlbuma']}</div>
<a target='
_blank' href='slike.php?IDa={$_GET['IDa']}'><img src='alb4.png' alt='alb' ></a>
<div class='
desc'>{$row['ImeAlbuma']}</div>
</div>" ;
}
}

$result->free();
}
else
{
echo '
Error! SQL query failed:';
echo "<pre>{$dbLink->error}</pre>";
}

$dbLink->close();

$ImeAlbuma = $row['
ImeAlbuma'];
?>

<g>Naloži novo sliko:</g>
<form action="nalozisliko.php" method="post" enctype="multipart/form-data">
<table border="0" cellspacing="0" align="center" cellpadding="3" bordercolor="#cccccc">
<tr>
<td><g>Ime slike: </g></td>
<td><input type="text" name="ImeSlike" /></td>
<td>Slika:</td>
<td><input type="file" name="filep" size=45></td>
</tr>
<tr>
<input type="hidden" name="ImeAlbuma" value="?????????" /> //????????????????????????
<td colspan=2><p align="center">
<input type="submit" name="action" value="Load">
</td>
</tr>
</table>
</form>

Zraven moje težave sem dal vprašaje, da je vidno kaj mislim. Namreč rad bi pod value vstavil vrednost "ImeAlbuma", ki je spremenljivka in jo dobim iz baze. Poskusil sem že z vsem možnim, vendar mi je preprosto zmanjkalo idej. Upam, da je moje vprašanje dovolj jasno, če ne se bom potrudil še bolj razložiti.



Za vsako pomoč bom hvaležen!


všeč(0) ni všeč(0) spam(0)
 
mrask 29. dec 2013 13:58:53 Pridružen od:
7. nov 2007
52 objav
27 4 0
#2

<input type="hidden" name="ImeAlbuma" value="<?php echo $ImeAlbuma;?>" />


všeč(1) ni všeč(0) spam(0)
 
dal 29. dec 2013 14:00:44 Pridružen od:
6. jun 2010
150 objav
87 1 2
#3
<input type="hidden" name="ImeAlbuma" value="<?php echo $ImeAlbuma; ?>" />

Odvisno od nastavitev strežnika in verzije PHP pa bi delalo tudi:


<input type="hidden" name="ImeAlbuma" value="<?=$ImeAlbuma?>" />

Dodaj še preverjanje vhodnih parametrov, da ti ne bodo pošiljali kakšnih neumnosti v bazo.


všeč(1) ni všeč(0) spam(0)
 
Vini 29. dec 2013 14:40:57 Pridružen od:
1. sep 2006
6612 objav
5234 611 56
#4

Kar sta rekla že dva zgoraj, jaz pa dodajam še tole:





:P


všeč(14) ni všeč(0) spam(0)
 
Kloner 29. dec 2013 14:43:22 Pridružen od:
29. dec 2013
2 objav
0 0 0
#5

Hvala obema za pomoč, ampak mi še kar v bazo ne shrani podatka ImeAlbuma.



V bazo pa shranim pol z:



mysqlquery("INSERT into m1000575slike (PotDoSlike, UstSliko, ImeSlike, ImeAlbuma) VALUES('".$FILES['filep']['name']."', '$SESSION[Uporabnisko]', '$POST[ImeSlike]', '$_POST[ImeAlbuma]')");



Če je lahko tu mogoče kak problem?



edit: sedaj pa dela! Res hvala vsem za pomoč! lps


všeč(0) ni všeč(0) spam(0)
 
Gogy 29. dec 2013 21:52:06 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#6

Upoštevaj tole slikico, ki ti jo je Vini prilimal. Kot vidiš iz napisanega je to zelo resen problem.


všeč(0) ni všeč(0) spam(0)
 
Jacky 30. dec 2013 18:45:48 Pridružen od:
22. apr 2012
73 objav
53 15 0
#7

Ta slikca zgoraj zmaga res!


všeč(0) ni všeč(1) spam(0)
 
Tomcater 6. jan 2014 21:20:04 Pridružen od:
29. okt 2009
595 objav
509 82 8
#8

Poleg slikce si poglej še tole: http://en.wikipedia.org/wiki/SQL_injection



Problem pa imaš, ker se ti 'while' stavek zaključi, ti pa še vedno nato želiš spodaj dostopati do lokalne spremenljivke v bloku ($row). Naredi tako, da inicializiraš spremenljivko ($ImeAlbuma) na začetku in ji nato daš vrednost v samem 'while' stavku. Na ta način bo spremenljivka imela pravo vrednost, ki jo iščeš. Pomagaj pa si tudi s tem http://www.php.net/var_dump Verjetno ti bo marsikdaj koristilo.



Za SQL injection pa uporabi npr. vsaj http://www.php.net/manual/en/mysqli.real-escape-string.php


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se