1 (edited by ramunas 2011-11-16 18:13:49)

Topic: reikia pagalbos php

sveiki visi,
      stai turiu   toki prisijungimo  koda, duombazej esu sukures lentele 3eiluciu (uid,username,password), kai bandau prisijunti prie jos  su siuo kodu,jis prisijungia bet negauna informacijos,nors duombazej duomenis ivesti .kai suvedu i laukelius varda ir slaptazodi raso kad , neteisingas vartotojo vardas slaptazodis,nors duombazei viskas taspats tiek paswordas tiek vardas .kame beda,ce pirmieji bandymai susyje su php,todel labai nesmerkit.

<?php

if(isset($_GET['logout']))
{//logout
$expire=time()-60*60*24*30;//1 month
setcookie("uid", "", $expire);
}
if(isset($_POST['user']))
{
$user = $_POST['user'];
$pass = md5($_POST['pass']);
//Connect to server
$con = mysql_connect("localhost", "------", "-----");
if(!$con){die('Could not connect: '. mysql_error());}
//select db
mysql_select_db("-------", $con);
//check or exist
if(mysql_num_rows(mysql_query("SELECT * FROM vartotojai where username = '$user' AND password = '$pass'")))
{//User exist.
$result = mysql_query("SELECT * FROM vartotojai where username = '$user' AND password = '$pass'");
while($row = mysql_fetch_array($result))
{
$expire=time()+60*60*24*30;//1 month
setcookie("uid", $row['uid'], $expire);
$userID = $row['uid'];
echo "prisijunges kaip <b>".$row['username']."</b><br>";
}
}else{
//wrong username or password
echo "<b>neteisingas vartotojo vardas slaptazodis</b><br><br>";
}
mysql_close($con);
}
if(isset($_COOKIE['uid']))
{
$userID = $_COOKIE['uid'];
}
if(isset($userID))
{
//check or not in logout page if is he do not says hello, shows form instead that, (cookie stays alive 1 refresh after delete)
if(!isset($_GET['logout'])){
echo "sweiki atvyke(<a href='?atsijunkti'>atsijunkti?</a>)";
}else{
echo "<form method='post' action='index.php
'>
Username<br><input type='text' name='user'><br>
Password<br><input type='password' name='pass'><br>
<input type='submit' value='prisijunkti'>
</form>";
}
}else{
echo "<form method='post' action='index.php'>
vardas<input size='10' type='text' name='user' >
slaptazodis<input size='10'  type='password' name='pass'>
<input type='submit' value='prisijunkti'>

</form>";
}//---
?>

2 (edited by xnew 2011-11-16 19:47:46)

Re: reikia pagalbos php

Painus tavo kodas, nelabai supratau ką įrašai į stulpelį uid, sausainėlis saugomas kliento pusėje. Toliau sausainėlio pavadinima užsetinai uid vardu, manau sausainėli reiktų pavadinti vartotoju vardu taip bus lengviau atskirti vartotojus. Slaptažodį neįrašei į sausainėlį, todėl kaip patikrinsi ar teisingas slaptažodis?

Re: reikia pagalbos php

internete yra tikrai normaliasniu gatavu skriptu o ne sis biesas

var_dump(0 == 'tekstas'); // TRUE. ar zinai kodel? :)

Re: reikia pagalbos php

@ramunas,
sausainyje saugai vartotojo id ir taip atskiri ar jis prisijunges. O kas bus kai as i sausaini irasysiu bet koki id, o gi jei pataikysiu i uzimta id, as automatiskai busiu prijungtas kaip atitinkamas vartotojas su tuo id (tavo sistema "pahackinta"). Nors ir tavo SQL'as nera apsaugotas nuo injekciju, tai nesunkiai galima ir su tavo db padaryti ka tik nori.

Siaip ar useris prisijunges ir visa kita su useriu susijusia svarbia informacija reikia saugoti sessijoje o ne cookie, nes cookie kaip ir visa kita informacija gaunama is vartotojo(narsykles) galima labai nesunkiai klastoti(keisti).

Taigi labai rekomenduoju pasiskaityti kas yra: SQL-injection, sessijos, XSS(Cross-site scripting).

Re: reikia pagalbos php

uid dėčiau 1, dažniausia tai bus administratorius :)

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: reikia pagalbos php

ne kazkas neaiskaus yra  bandziau koda ant local serverio veikia puikiai ,bet kai perkeliu failus i hostinga vel viskas blogai i duomenu baze pasijungia bet slaptazodziai ir prisijungimo vardai netinka.neisivaizduoju kas ce blogai duomenis suvedu teisingai.

Re: reikia pagalbos php

Tai matyt skiriasi nuo tavo duomenų localhoste.

MongoDB Certified Developer
MongoDB Certified DBA
Zend Certified Engineer

Re: reikia pagalbos php

ramunas wrote:

stai turiu   toki prisijungimo  koda, duombazej esu sukures lentele 3eiluciu

Ar kurei duombazė 'rankomis' užuot importinęs sql faila? tokiu atveju galėjai pridaryti klaidų kaip antai per mažai išskirta vietos slaptažodžiui.

ramunas wrote:

kai suvedu i laukelius varda ir slaptazodi raso kad , neteisingas vartotojo vardas slaptazodis,nors duombazei viskas taspats tiek paswordas tiek vardas

Gera vieta padebuginti, vietoj nieko nepasakančios žinutes išsiprintink informacija (pvz hašinta slaptažotį, username) ir sulygink su duomenų bazėje esančia info.

ramunas wrote:
$pass = md5($_POST['pass']);

slaptažodis negali būti toks pats kokį suvedei ir koks yra duombazėj nes duombazėj jis hašintas (naudoji md5). Kitaip sakant orginalus inputas yra modifikuojamas. (Norėjau patikslinti jei kartais ne ta galvoje turėjai ir bandei į inputa suvesti jau hašinta slaptažodį.)

Kalbant dar apie duomenų bazės struktūra, reiktų atkreipti dėmesį į tablų užvadinima. Importuojant per phpMyAdmin su defaultiniais nustatymais visus tablų pavadinimus padarydavo mažosiomis raidėmis. šis nesutapimas įšauktų 'BLABLA column not found' klaidą, bet pas taves klaidų handlinimo praktiškai nėra, tai belieka gaudyt vėja laukuose :)

No warning? No action? I hate this situation!

9 (edited by ramunas 2011-11-17 18:38:01)

Re: reikia pagalbos php

Warning: Cannot modify header information - headers already sent by (output started at /home/ramunas/public_html/index.php:6) in /home/ramunas/public_html/index.php on line 84

jau beveik baigiu isknaisioti savo problema,prisijungiu prie tinklapio ir kartu su prisijungimu meta sita  ispejima,ka ce pan reiketu pakeist kad jis isnyktu

setcookie("uid", $row['uid'], $expire);

ce 84 eilute

Re: reikia pagalbos php

Tai reiskias, kazka pries tai jau isechinai/printinai ar dar kitaip "isvedei i ekrana".

Headeriai turi buti setinami pries bet kokius atvaizdavimus.