Poslao: 15 Mar 2008 17:30
|
offline
- Pridružio: 18 Dec 2007
- Poruke: 95
|
imam problem prijavljuje mi gresku da nemoze da pokrene query evo skripte!
<?php
//pravimo promenljive s kratkim imenima
$ime = $_POST['ime'];
$lozinka = $_POST['lozinka'];
if (!isset($_POST['ime'])&&!isset($_POST['lozinka']))
{
//posetilac mora da unese korisnicko ime i lozinku
?>
<h1>Molimo vas unesite podatke</h1>
<form method="post" action="secret.php">
<table border="1">
<tr>
<th>Ime</th>
<td><input type="text" name="ime"></td>
</tr>
<tr>
<th>Lozinka</th>
<td><input type="password" name="lozinka"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Udji">
</td>
</tr>
<table>
</form>
<?php
}
else
{
//uspostavljamo vezu sa mysql-om
$mysql = mysqli_connect('shadow','logbaza','logbaza');
if(!$mysql)
{
echo 'Baza nije povezana.';
exit;
}
//biramo odgovarajucu bazu podataka
$selected = mysqli_select_db( $mysql,'log');
if(!selected)
{
echo 'baza nije nadjena.';
exit;
}
//izvrsavamo upit da bi smo videli
//da li postoji odgovarjuci zapis
$query = "select count(*) from dozvolekorisnika where
name = '$ime' and
pass = '$lozinka'";
$result = mysqli_query ( $mysql, $query );
if(!$result)
{
echo 'Ne moze se pokrenuti query.';
exit;
}
$row = mysqli_fetch_row($result);
$count = $row[0];
if($count > 0)
{
//kombinacija imena i lozinka posetioca je tacna
echo '<h1>Dobrodosli</h1>';
}
else
{
//kombinacija imena i lozinke je netacna
echo '<h1>Lozinka ili ime nisu tacni pokusajte ponovo!</h1>';
}
}
?>
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 15 Mar 2008 18:10
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
if (!isset($_POST['ime'])&&!isset($_POST['lozinka']))
AND (&&) operator vraca true samo ako su oba uslova ispunjena, u svim ostalim slucajevima vraca false. Dakle, ako ti je $_POST['lozinka'] setovana, a $_POST['ime'] nije, proci ce ovaj uslov (provera vraca false) i pustice te dalje.
Dalje, ovo je MySQL Lite, a ne MySQL i bas lepo od tebe sto si podelio user i pass baze sa nama
Nakon sto se konektujes na bazu, veci deo koda ti je nepotreban. U stvari, sve je napisano zbrda-zdola... Tebi u stvari treba ovo:
<?php
if (isset($_POST['udji'])) {
if (isset($_POST['ime']) and isset($_POST['lozinka'])); {
$connect = mysqli_connect('shadow','logbaza','logbaza') or die(mysqli_error());
mysqli_select_db($connect,'log') or die(mysqli_error());
$ime = $_POST['ime'];
$lozinka = $_POST['lozinka'];
$nadji = mysqli_query("SELECT `pass` FROM `dozvolekorisnika` WHERE `user` = " . $ime . "'");
$nasao = @mysqli_result($nadji,0);
if ($lozinka == $nasao) {
echo '<h1>Dobrodosli</h1>';
}
else {
echo '<h1>Lozinka ili ime nisu tacni pokusajte ponovo!</h1>';
}
mysqli_close($connect);
}
}
else {
?>
<h1>Molimo vas unesite podatke</h1>
<form method="post" action="secret.php">
<table border="1">
<tr>
<th>Ime</th>
<td><input type="text" name="ime"></td>
</tr>
<tr>
<th>Lozinka</th>
<td><input type="password" name="lozinka"></td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="Udji" name="udji">
</td>
</tr>
<table>
</form>
<?php
}
?>
Bilo bi jos bolje, da u bazi ne cuvas originalne passworde, nego hasheve (md5 i sha1 - i to bolje ovaj drugi), kako bi korisnike zastitio ako ti neko "drpi" bazu i procita passworde
|
|
|
|
|
Poslao: 15 Mar 2008 18:50
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
Kakvu gresku ti izbacuje, ako ti uopste izbacuje gresku?
|
|
|
|
Poslao: 15 Mar 2008 20:11
|
offline
- Pridružio: 18 Dec 2007
- Poruke: 95
|
ne izbacuje mi nista bela strana kad ukucam kao neku sifru
|
|
|
|
Poslao: 15 Mar 2008 23:42
|
offline
- Rastafarii
- Moderator foruma
- Pridružio: 22 Mar 2006
- Poruke: 3760
- Gde živiš: 127.0.0.1
|
ajde sad jedno pitanjce: kako si nazvao ovaj fajl? I sto koristis mysqli?
|
|
|
|
Poslao: 16 Mar 2008 08:49
|
offline
- lnenad
- Stručni saradnik
Web
- Pridružio: 16 Jan 2007
- Poruke: 2860
- Gde živiš: Bijeljina
|
@serafim
Da li ovo testiras lokalno, posto si sigurno disablovao prikazivanje gresaka. Ako jeste lokalno uradi ovako
Udjes u direktorijum gdje si instlairao apache (Ako ti je apache server?) pa u folder logs i tu otvori error.log, i kopiraj nam ovdje poslednja 2/3 reda.
A mozes i ovo da probas samo sto je kod mene ovo ne radi ali eto cisto da probas >
Stavi ovo na vrh php stranice
error_reporting(E_ALL);
Kad ovo dodas ponovo testiraj stranicu...
|
|
|
|
Poslao: 16 Mar 2008 14:29
|
offline
- igor86
- Stručni saradnik
Web programiranje
- Pridružio: 24 Maj 2006
- Poruke: 1633
|
Koliko vidim ovaj red nema svrhe
Citat:if (isset($_POST['ime']) and isset($_POST['lozinka']));
@serafim
Ukoliko koristis php4 taj code ti nece raditi, mysqli_connect. Tu ti pukne 100%.
|
|
|
|
|
Poslao: 16 Mar 2008 19:40
|
offline
- Pridružio: 18 Dec 2007
- Poruke: 95
|
da testiram lokalno evo zadnjih par redova.Koristim 5.25 od danas
[Sun Mar 16 05:50:51 2008] [warn] (OS 121)The semaphore timeout period has expired. : winnt_accept: Asynchronous AcceptEx failed.
[Sun Mar 16 13:34:10 2008] [warn] (OS 121)The semaphore timeout period has expired. : winnt_accept: Asynchronous AcceptEx failed.
[Sun Mar 16 19:35:47 2008] [error] [client 79.175.78.84] PHP Notice: Undefined index: ime in H:\\Rad\\secret.php on line 3
[Sun Mar 16 19:35:47 2008] [error] [client 79.175.78.84] PHP Notice: Undefined index: lozinka in H:\\Rad\\secret.php on line 4
[Sun Mar 16 19:48:42 2008] [error] [client 79.175.78.84] PHP Warning: mysqli_query() expects at least 2 parameters, 1 given in H:\\Rad\\secretdb.php on line 13, referer: shadow/secretdb.php
ovde je nesto
$nadji = mysqli_query("SELECT 'pass' FROM 'dozvolekorisnika' WHERE 'name' = " . $ime . "'");
|
|
|
|