|
[ Psyche @ 06.10.2006. 17:49 ] @
| Imam jednostavan formular iz kog podaci treba da se proslede u bazu.
Code:
<form action="podaci.php" method="post" name="nalozi" id="ApplicationForm">
<label for="username">Korisničko ime:</label>
<input id="username" type="text" name="username" value="" class="Input" maxlength="8" />
....
<input name="posalji" type="submit" id="posalji" value="Upiši odgovore u bazu" class="dugme">
</form>
ali se nista sem rb i emaila ne upise.
Code:
<?
$email = $_POST['username']."@mojdomen.com";
$conn = mysql_connect(localhost, root, blabla, blabla) or
die("Could not connect: " . mysql_error());
mysql_select_db(blabla);
$nalozi = "INSERT INTO studenti (rb, username, password, lastname, firstname, email, prosek, stat1, stat2, metod, racunar, spss, termin1, termin2) VALUES('', '$username', '$password', '$lastname', '$firstname', '$email', '$prosek', '$stat1', '$stat2', '$metod', '$racunar', '$spss', '$termin1', '$termin2')";
$result = mysql_query($nalozi, $conn);
mysql_close();
?>
U cemu gresim??? |
[ nezki @ 06.10.2006. 17:54 ] @
greska ti je u qery ako si napisao bas tako kao sto pise
"INSERT INTO studenti (rb, username, password, lastname, firstname, email, prosek, stat1, stat2, metod, racunar, spss, termin1, termin2) VALUES('', '$username', '$password', '$lastname', '$firstname', '$email', '$prosek', '$stat1', '$stat2', '$metod', '$racunar', '$spss', '$termin1', '$termin2')";
Probaj da promenljive stavis ovako '",$password."' i svaku tako ako ti nebude i dalje radilo javi pa cemo naci bug.
Poz
[ Psyche @ 06.10.2006. 17:59 ] @
I jos nesto, kako da generisem varijablu $random_password koja bi se sastojala od npr. 8 znakova - slucajna kombinacija slova a-z i brojeva 0-9.
Hvala!
[ nezki @ 06.10.2006. 18:11 ] @
Jesi ispravio prethodnu gresku?
ako jesi za to koristi f-ju cript ili cyript ne mogu sada da gledam u knjizi ako ti je bas hitno javi pa cu ti poslati resenje.
[ Psyche @ 06.10.2006. 19:13 ] @
Nisam ispravila, ali cini mi se da je ranije radilo i bez toga. Mogla bih da ih sve pohvatam sa:
$username = $_POST['username'];
ali to bas i nije prakticno resenje.
[ nezki @ 06.10.2006. 19:14 ] @
$crypted_password=crypt($password,$random_password);
$random_password je bilo koja sifra a f-ja crypt ce ti sakriti tvoj password!
i onda $crypted_password unosis u bazu.
[ nezki @ 06.10.2006. 19:18 ] @
Ne razuem te ,da li ti sada radi upis u bazu?
[ Psyche @ 06.10.2006. 19:22 ] @
Pa radi mi u principu upis u bazu, ali mi ne sacuva varijable sa prethodne stranice sem ako ne ukucam malopre navedeno.
A nisam mislila na kriptovanje postojece lozinke, vec da se generise neki niz slucajno dugacak npr. 8 karaktera.
[ nezki @ 06.10.2006. 19:33 ] @
jesi pokusala da upises varijeble kako sam ti rekao,ako jesi onda verovatno imas problem sa prenosom promenljivih.Ili te ja nisamdobro razumeo.
[ Psyche @ 06.10.2006. 19:51 ] @
Da, problem je u prenosu varijabli, ne u samom upisu jer ako stavim ovo:
$username = $_POST['username'];
$password = $_POST['password'];
$lastname = $_POST['lastname'];
$firstname = $_POST['firstname'];
$prosek = $_POST['prosek'];
$stat1 = $_POST['stat1'];
$stat2 = $_POST['stat2'];
$metod = $_POST['metod'];
$racunar = $_POST['racunar'];
$spss = $_POST['spss'];
$termin1 = $_POST['termin1'];
$termin2 = $_POST['termin2'];
upise se sve.
[ nezki @ 06.10.2006. 20:12 ] @
Zamisli koja slucajnost i ja imam isti problem.I sada se kajem zasto nisam radio tako kao sto si ti napisala jer moram da prepravljam sve skripte koje imam zbog toga.
ovako:
Moj savet ti je da svaku promenljivu koju unosis ili koristis uvek tako pises sa $_POST ili vec $_GET jer na vecini servera iskljucena je opcija register_globals (kao sto je na mom prokletom serveru),a ako ti ipak mislis da te to smara samo u php.ini fajlu pronadji tu liniju register_globals i podesi na ON i resices sve tvoje probleme.
Poz.
Ps.ako imas jos nekih problema javi se,posto znam kako je kada se cimas oko glupog koda.
[ Psyche @ 06.10.2006. 20:37 ] @
Da, ali nekad imam i po 300 stavki, a ranije je radilo i bez toga, bar mislim.
[Ovu poruku je menjao Psyche dana 06.10.2006. u 21:59 GMT+1]
[ nezki @ 06.10.2006. 21:34 ] @
Ja imam 3300 i sve moram da promenim.Mislim da sigurni nije radilo .Kazem ti opet na tebi je da odlucis ,mozes i da ukljucis register_globals(),ali...
Najbolje da ostavis ,a problem ce se sam resiti... :-)
to su meni rekli kad asam hteo da poludim zbog skripti:-)
[ CtrlAltDel @ 06.10.2006. 23:12 ] @
Citat: Psyche: Da, problem je u prenosu varijabli, ne u samom upisu jer ako stavim ovo:
$username = $_POST['username'];
$password = $_POST['password'];
$lastname = $_POST['lastname'];
$firstname = $_POST['firstname'];
$prosek = $_POST['prosek'];
$stat1 = $_POST['stat1'];
$stat2 = $_POST['stat2'];
$metod = $_POST['metod'];
$racunar = $_POST['racunar'];
$spss = $_POST['spss'];
$termin1 = $_POST['termin1'];
$termin2 = $_POST['termin2'];
upise se sve.
ovo se mnogo elegantnije radi sa samo extract($_POST);
nema milion redova kuckaranja... :)
[ Psyche @ 07.10.2006. 00:54 ] @
E, pa hvala :)
[ sale83 @ 07.10.2006. 03:13 ] @
Evo nesto na brzinu sa Password :)
Code:
function returnPassword($length){
$chars = array("a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k",
"K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v",
"V","w","W","x","X","y","Y","z","Z","1","2","3","4","5","6","7","8","9","0");
$lngt = $length;
$password = "";
for ($i=0; $i<$lngt; $i++) {
$password .= $chars[rand(0, count($chars)-1)];
}
return $password;
}
echo returnPassword(8);
?>
Poz
sale
[ Nemanja Avramović @ 07.10.2006. 12:51 ] @
Citat: nezki: a ako ti ipak mislis da te to smara samo u php.ini fajlu pronadji tu liniju register_globals i podesi na ON i resices sve tvoje probleme.
Rešićeš probleme prenosa promenljivih, ali ćeš sebi na vrat navući problem deface-ovanog sajta (vrlo verovatno).
Citat: CtrlAltDel: ovo se mnogo elegantnije radi sa samo extract($_POST);
nema milion redova kuckaranja... :)
Ovo radi isto kao i register_globals kad je on, te nosi iste posledice po sigurnost sajta. Pogledajte http://php.net/register_globals i primere autorizacije korisnika na tom linku. Mala greškica i ode sajt. Bolje je ipak sa $var = $_POST['var']; za svaku promenljivu!
[ Jezdimir Lončar @ 07.10.2006. 14:08 ] @
Aha.
Registred globals nisu bile ukljucene pa zato to nije islo.
Mozes da probas i sa:
mysql_query("INSERT INTO tabela VALUES (".$_POST['rb'].",'".$_POST['username']."');"); i slicno.
Ovo je jednostavnije jer te variable vise u skripti neces koristiti, a isto je.
Naravno, registred globals mogu da predstavljaju veliki sigurnosni problem, pa ti ne preporucujem da ih stavis ON.
[ nezki @ 07.10.2006. 19:04 ] @
koji su najcesci slucajevi da se sajt unisti,mislim koji su najcesci problemi kada je register_globals=on.
Psto je na mom serveru sada to ukljuceno.
[ Nemanja Avramović @ 07.10.2006. 19:57 ] @
Dao sam ti link, ali evo ti opet:
http://php.net/register_globals
Tamo imaš školski primer greške u programiranju gde se samo sa browserom može preuzeti kontrola na sajtu.
edit:
Citat: Neohacker: Mozes da probas i sa:
mysql_query("INSERT INTO tabela VALUES (".$_POST['rb'].",'".$_POST['username']."');"); i slicno.
Ovo je jednostavnije jer te variable vise u skripti neces koristiti, a isto je.
Pa ovo i nije baš dobro, preporučljivo je escape-ovati stringove pre ubacivanja u query. Zato lepo $username = addslashes($_POST['username']);
Takođe, ako radite neku internu aplikaciju koja neće biti dostupna širokom auditorijumu, preglednije je da ovako radite:
Code: mysql_query("INSERT INTO tabela VALUES ({$_POST['rb']},'{$_POST['username']}');");

[ CtrlAltDel @ 08.10.2006. 12:49 ] @
@Nemanja Avramovic - hvala za ono sa extract ...
[ Nemanja Avramović @ 08.10.2006. 13:52 ] @
Nema na čemu 
[ afwt @ 09.10.2006. 22:14 ] @
$clean = array();
foreach ( $_POST as $k => $v ) $clean[$k] = mysql_real_escape_string( ( get_magic_quotes_gpc() ? stripslashes($v) : $v ) );
Ako koristis $clean umesto $_POST, mogu ti pljunu pod prozor jer tako sve cistis pre unosa u bazu i nema mesta gresci. U tom slucaju jaci si od sudbine (ne moze ti niko nista, tj.) ;-)
[ Nemanja Avramović @ 10.10.2006. 00:43 ] @
Da, to pomaže kod unosa u bazu, ali ne i kod preuzimanja administracije sajta ako je sistem za autorizaciju loše napisan.
[ afwt @ 10.10.2006. 08:41 ] @
Naravno JaHvrame, znas na sta sam mislio. :-)
Dakle: ovo je napomena za odbranu od tzv. SQL injections-a, ne za autentikaciju!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|