View previous topic :: View next topic |
Author |
Message |
Hrvoje
Joined: 04 Sep 2004 Posts: 132 Location: My office
|
Posted: 22.01.2010 16:48 Post subject: PHP if (!$_POST[""]) |
|
|
Ucim PHP i malo zapinjem
Radim po tutoru sa http://www.php.com.hr unos, pregled, uređivanje i brisanje vijesti.
Na bazu se spojim i sve ok, ali kod unosa vijesti javlja mi grešku: Undefined index: SBunos
Malo sam citao o $_POST-u ali nije mi bas sve jasno
Dosta pomoci sam dobio upravo ovdje, nadam se da cu i ja jednog dana doprinjeti zajednici
Code: | <html>
<head>
<title>Unos vijesti</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>
<body>
<h1>Unos novosti</h1>
<hr>
<?PHP
if (!$_POST["SBunos"])
{
?>
<form method="post" action="">
Naslov : <input type="text" name="naslov"><br>
Tekst : <textarea name="tekst"></textarea><br>
<input type="submit" name="SBunos" value="Pohrani">
</form>
<?PHP
} else {
include "dbspoj.php";
$datum=date("Y-m-d");
$sql="INSERT INTO novosti (naslov, tekst, datum)
VALUES ('$_POST[naslov]', '$_POST[tekst]', '$datum')";
if (mysql_query($sql))
{
echo "Novost je uspješno pohranjena";
} else {
echo "Nastala je greška pri pohrani novosti<br>" . mysql_error();
}
}
?>
</body>
</html> |
|
|
|
Back to top |
|
|
strija
Joined: 14 Sep 2003 Posts: 473 Location: Čakovec
|
Posted: 22.01.2010 17:57 Post subject: |
|
|
Umjesto:
Code: | if (!$_POST["SBunos"]) |
Stavi:
Code: | if ( ! isset($_POST["SBunos"])) |
Samo nemoj tako stavljati online, jer je velika sigurnosna rupa |
_________________ We can exist in ambiguity, but it means the deepest loneliness. | creolab.hr | thefarewellreason.com |
|
Back to top |
|
|
Hrvoje
Joined: 04 Sep 2004 Posts: 132 Location: My office
|
Posted: 22.01.2010 18:05 Post subject: |
|
|
Evo ga radi Hvala!
U cemu je u biti bit? Da znam za ubuduce?
Ovo radim lokalno nece biti nigdje online, tako da nema beda samo ucim |
|
|
Back to top |
|
|
Moebius
Joined: 26 Jan 2004 Posts: 245 Location: zagreb
|
Posted: 22.01.2010 20:53 Post subject: |
|
|
Quote: | Samo nemoj tako stavljati online, jer je velika sigurnosna rupa |
Ne razumijem, objasnis covjeku sto da napravi, ali mu dodatno sugeriras da se to tako ne radi? |
|
|
Back to top |
|
|
strija
Joined: 14 Sep 2003 Posts: 473 Location: Čakovec
|
Posted: 22.01.2010 22:17 Post subject: |
|
|
Dio koji je trazio je ok. Nisam se dovoljno jasno izrazio sto mislim u vezi sigurnosti, sori
Znaci nije pametno stavljati $_POST varijable direktno u query. Treba postojati neka validacija i provjera da varijabla ne bi sadzavala kod koji bi npr. mogao obrisati tabelu.
Za ucenje PHP-a je ovo ok, ja sam mislio na neku live aplikaciju. |
_________________ We can exist in ambiguity, but it means the deepest loneliness. | creolab.hr | thefarewellreason.com |
|
Back to top |
|
|
sysrq147
Joined: 01 Jan 2010 Posts: 9
|
Posted: 23.01.2010 13:26 Post subject: |
|
|
$_POST je globalna varijabla, pa kako mi se čini ne možeš ju negirati simbolom !, nije to neka funkcija koja vraća rezultata pa da to negiraš. Ona prima vrijednosti iz tih tekst polja. Tako da to što si pisao !$_POST["tralala"] i nema nekoga smisla..bar po meni. Koristi isset() funkciju koja ti govori jeli postavljena (postavljene) vrijednosti te varijable. To je ono čisto laički rečeno...jer sam laik. hehe . Pozdrav . |
|
|
Back to top |
|
|
strija
Joined: 14 Sep 2003 Posts: 473 Location: Čakovec
|
Posted: 23.01.2010 20:30 Post subject: |
|
|
$_POST je array, i ako zelis provjeriti da li postoji neki index u arrayu koristi se isset().
Ovo sto si napisao da globalne varijable ne mozes negirati sa ! simbolom mi uopce nije jasno. Ako zelis pitati da li neka varjabla nije postavljena pitas ovako:
Code: | if ( ! isset($varijabla)) |
A moze i ovako:
Code: | if ( ! array_key_exists('moj_index', $moj_array)) |
Ja koristim uvijek isset() jer je kao prvo funkcija samo po sebi brza, a i krace je za napisat.
Iz ovog sto si napisao bas ne vidim da imas iskustva sa radom u PHP-u, pa neznam zasto pricas stvari za koje nisi provjerio da li su tocne. |
_________________ We can exist in ambiguity, but it means the deepest loneliness. | creolab.hr | thefarewellreason.com |
|
Back to top |
|
|
sysrq147
Joined: 01 Jan 2010 Posts: 9
|
Posted: 24.01.2010 00:30 Post subject: |
|
|
Ne znam, zašto si se ti našao uvrijeđen...Ja dakako nemam iskustva s tim, i moje je znanje ograničeno, jer to nije moje područije djelovanja. Ali i ti odmah pretjerano reagiraš. Ja upošte nisam rekao da je tvoje riješenje netočno, nadasve upravo se to i radi kako si ti rekao. Ali npr izraz.
Code: | if (!$neka_varijabla){...} | po mojoj logici ne bi stajala.A dali je to tako, molim te odgovori mi, jer cu nauciti nesto novo. Možda nisam bio dovoljno jasan, ali molim te pročitaj malo pažljivije i nemoj tako temperamentno reagirati. Tu sam da učim. |
|
|
Back to top |
|
|
sysrq147
Joined: 01 Jan 2010 Posts: 9
|
Posted: 24.01.2010 01:01 Post subject: |
|
|
i da se ispravim, jasno da će navedeni izraz vratiti false ako nije postavljena ta varijabla, i true ako je. Ali dali je to tako i u slucaju superglobalne, kao sto je $_POST. Ja mislim da nije, ako je molim da netko odgovori. Hvala. |
|
|
Back to top |
|
|
strija
Joined: 14 Sep 2003 Posts: 473 Location: Čakovec
|
Posted: 24.01.2010 01:35 Post subject: |
|
|
Pa nisam se uopce nasao uvrijedjen i ne vidim gdje sam to tako pretjerano reagirao. Jedina reakcija je bila na to da savjetujes da se ne moze korisiti slijedece:
Code: | if ( ! $_POST['neka_varijabla']) |
Ovo je potpuno ispravno i moze se korisiti ako znas da ce biti postavljen index 'neka_varijabla'. Ako ne znas onda se koristi isset().
Jos uvijek ne razumijem o cemu tocno pricamo, zasto se na taj nacin ne bi moglo provjeriti da li je varijabla FALSE?
Izraz nece vratiti TRUE ako je npr. varijabla postavljena, a njena vrijednost je 0 ili FALSE. Znaci ponasa se kao i svaka druga varijable. To sto je super global, znaci samo da se moze procitati u bilo kojoj funkciji ili class-i, bez da se mora koristiti global.
Sori ako ti se moja reakcija cini pretjerana, stvarno nije bila namjera. Samo pokusavam shvatiti sto je tocno poanta tvojeg posta. Ja nikad ne savjetujem nekoga na forumu ako nisam 100% siguran da je savjet ispravan |
_________________ We can exist in ambiguity, but it means the deepest loneliness. | creolab.hr | thefarewellreason.com |
|
Back to top |
|
|
sysrq147
Joined: 01 Jan 2010 Posts: 9
|
Posted: 24.01.2010 13:08 Post subject: |
|
|
E kvaka je u tome da ja uopšte nisam savjetovao nikoga, neko sam rekao odmah da prihvati tvoj savjet, i još nadodao da je moje mišljenje (ponavljam mišljenje - znači ne mora biti točno) da izraz
Code: | if ( !$_POST["SBunos"]) { ....} |
za konkretan problem nije valjan, i to je to... |
|
|
Back to top |
|
|
strija
Joined: 14 Sep 2003 Posts: 473 Location: Čakovec
|
Posted: 24.01.2010 13:10 Post subject: |
|
|
Ma sve 5, nesporazum |
_________________ We can exist in ambiguity, but it means the deepest loneliness. | creolab.hr | thefarewellreason.com |
|
Back to top |
|
|
sysrq147
Joined: 01 Jan 2010 Posts: 9
|
Posted: 24.01.2010 13:12 Post subject: |
|
|
Super, malo sam se nespretno izražavao. Važno je da si pomogao čovjeku. |
|
|
Back to top |
|
|
Hrvoje
Joined: 04 Sep 2004 Posts: 132 Location: My office
|
Posted: 25.01.2010 01:47 Post subject: |
|
|
Hvala svima na odgovorima, skuzio sam dosta toga u biti sitnica, ali bez toga ništa
Imao sam jos jedan mali problemcic sa ispisom iz baze, imao sam problem sa:
<?=$moja_varijabla?>
Kod mene nije radilo!
"echo" je rijesio problem, hvala strija |
|
|
Back to top |
|
|
|