Autor Zpráva
Alda61
Profil *
Dobrý den,
mám další 2 problémy:
1.
Warning: readdir(): supplied argument is not a valid Directory resource in /var/www/kr1/xnezbeda/projekt1/private/login.php on line 8
2.
Warning: Cannot modify header information - headers already sent by (output started at /var/www/kr1/xnezbeda/projekt1/private/login.php:8) in /var/www/kr1/xnezbeda/projekt1/private/login.php on line 25
Uživatel
Heslo

---------
<?
  
  $login=""; //uživatelské jméno
  $pass=""; //heslo
  $adresar="users";
  
  if ($_GET['action']=='validate'){
  while ($soubor = readdir($adresar)){
    if($soubor == $user) break;
    $login = $soubor;
    
    $file2 = fopen($soubor, "r");
    if (!$file2) {
    die("</br>Nelze otevrit soubor se soubory uzivatele");
    }
  $pass = fread($file2,filesize($soubor));
  fclose($file2);
  }
    if(($_POST['user']==$login)&&($_POST['passwd']==$pass)){
      session_start();
      $_SESSION["user_is_logged"] = 1;
      header("Location: index.php");
      exit;
    } else {
      header("Location: bad-login.html");
    }
  } 
  
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <title></title>
  </head>
  <body>
  
  <form action="./login.php?action=validate" method="post">
    <table>
     <tr><td><font color="white">Uživatel</font> </td><td><input type="text" name="user" /></td></tr>
     <tr><td><font color="white">Heslo</font> </td><td><input type="password" name="passwd" /></td></tr>
     <tr><td colspan="2">
     <input type="submit" value="..:: Log-in ::.." />&nbsp;<input type="button" value="..:: Sign-in ::.." onClick="window.location='register.php' "></td></tr>
    </table>
  </form>

  </body>
</html>



Teď mě napadlo že 2. hláška by se dala "fixnout"(echo '<meta http-equiv="refresh" content="3;url=...">';).
Ale druhou ...
Mike8748
Profil
Alda61:
hláška 2 sama zmizí v okamžiku kdy opravíš tu první

pokud jde o první, tak chyba je v parametru funkce readdir(), tomu nemáš jako parametr dávat jméno adresáře, ale výsledek fce opendir() která naopak název adresáře potřebuje

koukni na příklady v manuálu, http://php.net/readdir
Alda61
Profil *
Děkuji, ale po fixnuti zmizela hlaska 2, ale objevila se zase jina hlaska: Parse error: syntax error, unexpected T_WHILE in /var/www/kr1/xnezbeda/projekt1/private/login.php on line 8
<?
  
  $login=""; //uživatelské jméno
  $pass=""; //heslo
  
  if ($_GET['action']=='validate'){
  $adresar = opendir('users')
  while ($soubor = readdir($adresar)){
    if($soubor == $user) break;
    $login = $soubor;
    
    $file2 = fopen($soubor, "r");
    if (!$file2) {
    die("</br>Nelze otevrit soubor se soubory uzivatele");
    }
  $pass = fread($file2,filesize($soubor));
  fclose($file2);
  }
    if(($_POST['user']==$login)&&($_POST['passwd']==$pass)){
      session_start();
      $_SESSION["user_is_logged"] = 1;
      header("Location: index.php");
      exit;
    } else {
      header("Location: bad-login.html");
    }
  } 
  
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <title></title>
  </head>
  <body>
  
  <form action="./login.php?action=validate" method="post">
    <table>
     <tr><td><font color="white">Uživatel</font> </td><td><input type="text" name="user" /></td></tr>
     <tr><td><font color="white">Heslo</font> </td><td><input type="password" name="passwd" /></td></tr>
     <tr><td colspan="2">
     <input type="submit" value="..:: Log-in ::.." />&nbsp;<input type="button" value="..:: Sign-in ::.." onClick="window.location='register.php' "></td></tr>
    </table>
  </form>

  </body>
</html>
Virtus
Profil
Začněte používat nějaký editor, třeba NetBeans, automaticky vám zvýrazní červneně chyby ( syntax error ), opět vám tam chybý středník, řádke 7.
Alda61
Profil *
Děkuji...
Používám PSPad
Ale děkuji za radu, určitě vyzkouším
Alda61
Profil *
Další chyba...
Warning: filesize() [function.filesize]: stat failed for alda61.usr in /var/www/kr1/xnezbeda/projekt1/private/login.php on line 17

Warning: fread() [function.fread]: Length parameter must be greater than 0 in /var/www/kr1/xnezbeda/projekt1/private/login.php on line 17
users/.users/..

Warning: Cannot modify header information - headers already sent by (output started at /var/www/kr1/xnezbeda/projekt1/private/login.php:12) in /var/www/kr1/xnezbeda/projekt1/private/login.php on line 26

<?
  
  $login=""; //uživatelské jméno
  $pass=""; //heslo
  
  if ($_GET['action']=='validate'){
  $adresar = opendir('users');
  while ($soubor = readdir($adresar)){
    if($soubor == $user) break;
    $login = $soubor;
    $souborp = "users/".$soubor;
    echo $souborp;
    $file2 = fopen($souborp, "r");
    if (!$file2) {
    die("</br>Nelze otevrit soubor se soubory uzivatele");
    }
  $pass = fread($file2,filesize($soubor));
  fclose($file2);
  }
    if(($_POST['user']==$login)&&($_POST['passwd']==$pass)){
      session_start();
      $_SESSION["user_is_logged"] = 1;
      header("Location: index.php");
      exit;
    } else {
      header("Location: bad-login.html");
    }
  }

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=windows-1250">
  <title></title>
  </head>
  <body>
  
  <form action="./login.php?action=validate" method="post">
    <table>
     <tr><td><font color="white">Uživatel</font> </td><td><input type="text" name="user" /></td></tr>
     <tr><td><font color="white">Heslo</font> </td><td><input type="password" name="passwd" /></td></tr>
     <tr><td colspan="2">
     <input type="submit" value="..:: Log-in ::.." />&nbsp;<input type="button" value="..:: Sign-in ::.." onClick="window.location='register.php' "></td></tr>
    </table>
  </form>

  </body>
</html>
Tori
Profil
Co to má prosím vás dělat? Na ř.9 porovnáváte s neexistující (= v ukázce kódu není) proměnnou $user. Pokud by i náhodou byla ta podmínka někdy splněna, zůstane vám ve $file2 otevřený soubor z předchozí iterace (tzn. asi jiného uživatele). Nestačilo by prostě něco takového (jen tipuju):
  if ($_GET['action']=='validate'){
  $login = basename($user);  // nebo $login místo $user ???
  $souborp = 'users/'.$login;
  if (!file_exists($souborp) || !is_readable($souborp))
    die("</br>Nelze otevrit soubor se soubory uzivatele");

  $pass = file_get_contents($souborp);
}

if($_POST['user'] == $login && $_POST['passwd'] == $pass) {
  // .. atd.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: