[ FMZMilos @ 22.10.2005. 20:30 ] @
Imam mali problem sa jednom php skripticom.
Na pocetnoj strani postoje dva text boxa (a i b). Kada se unesu neki brojevi i klikne na submit prelazi se na stranicu koja proverava vrednosti a i b. Ako su vrednosti iste dalje se ide na ok.php a ako nisu ide se na bad.php. Problem je u tome sto mene u oba slucaja vodi na ok.php.

Evo i kodova, pa bih vas zamolio da vidite sta tu ne valja. I da zaboravih da napomenem da sam totalni pocetnik u php-u

index.php
Code:
<html>

<head>
</head>

<body>

<form method="post" action="ch.php">
    <p><input type="text" name="a" id="a" size="20" value="5"></p>
    <p><input type="text" name="b" id="b" size="20" value="5"></p>
    <p>&nbsp;</p>
    <p><input type="submit" value="Submit" name="s" id="s"></p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
    <p>&nbsp;</p>
</form>

</body>

</html>


ch.php
Code:
<?php
    if ($a === $b)
    {
        $status = 1;
        Header ("Location: ok.php");
    }
    else
    {
        $status = 0;
        Header ("Location: ok.php");
    }
?>


ok.php
Code:
<?
if ($status = 0)
{
    ?><head>
        <script language="JavaScript1.1">
        <!--
            location.replace("bad.php");
        //-->
        </script>
</head>
      <?
}
?>
<html>
<body>

<p align="center">sve je ok</p>

</body>
</html>


Unapred hvala!
[ SmilieBG @ 22.10.2005. 20:43 ] @
a stavi samo ovo u ch.php

Code:

<?

if(empty($_POST['a']) || empty($_POST['b'])
{
    echo "Nisu unesene obe vrednosti";
    exit;
}

if($_POST['a'] == $_POST['b'])
{
   echo "ok";
}
else
{
   echo "not ok";
}

?>


Poz,
Sale
[ noviKorisnik @ 22.10.2005. 20:48 ] @
Više stvari...

ch.php - uslov treba da bude...
Code:
if ($_POST ['a'] == $_POST ['b'])...

Onaj uslov što si postavio radio bi samo u okruženju gde je uključen register_globals, a to uglavnom više nije slučaj.

kod...
Code:
$status = 0;
header ('Location: ok.php');

... nema smisla jer se tako neće preneti promenljiva $status u ok.php, što je ovde bila namera. To može da se učini preko sesija.

I konačno, još jedna greška u ok.php...
Code:
if ($status = 0)...

... ovde je greškom u uslovu dodela umesto provere jednakosti. Kako je rezultat dodele 0, uvek je false i nikad se ne vrši js redirekcija...
[ FMZMilos @ 22.10.2005. 21:44 ] @
Hvala na odgovorima!

Vise mi odgovara ovaj drugi primer, jer mi je potrebno da ako su brojevi razliciti da se zabrani pristup stranici ok.php tj. da se redirektuje na bad.php

E sad bih zamolio nekoga da mi kaze kako da prenesem promenljivu $status u ok.php.
[ noviKorisnik @ 22.10.2005. 23:29 ] @
Citat:
To može da se učini preko sesija.

ch.php
Code:
<?php
session_start ();
$_SESSION ['status'] = $_POST ['a'] == $_POST ['b'];
header ('Location: ok.php');
?>

ok.php
Code:
<?php
session_start ();
if (!isset ($_SESSION ['status']) || !$_SESSION ['status'])
{
    header ('Location: bad.php');
    exit;
}
?>
<html>....

Nema potrebe da vršiš js redirekciju kad već možeš to iz php.
[ FMZMilos @ 22.10.2005. 23:40 ] @
Hvala puno Novi Korisnice ovo mi je trebalo!
[ Nemanja Avramović @ 22.10.2005. 23:41 ] @
iako su koristili, nisu ti napomenuli:
posle header redirekcije stavi exit; ili die();