Автор Тема: Адресна книга (част 1)  (Прочетена 32975 пъти)

0 Потребители и 1 Гост преглежда(т) тази тема.

jazzman

  • Hero Member
  • *****
  • Благодарности
  • -Казани: 25
  • -Получени: 191
  • Публикации: 3624
Re: Адресна книга (част 1)
« Отговор #45 -: 04 Май 2013, 15:31:50 »
Сега ти си публикувай друг код и не знам в/у кой да ти дам отговор  ???

И при първият и при вторият имаш едно общо нещо - нямаш зададен name attribute на password полето, вместо него си сложил pass attribute (предполагам от недоглеждане).

Код: PHP
  1.  
  2. Password:<input type="password" pass="pass">
  3.  
  4.  

Тези нотиси в кода ги получаваш понеже някъде има недифирана (неопределена) променилива.

Много хора заобикалят тези нотиси и макар че те да не са реално грешки, аз ги третирам като логически грешки.

Пусни търсене в google с име Notice: Undefined index in php и предполагам, че страшно много примери ще изкочат.
« Последна редакция: 04 Май 2013, 15:41:54 от jazzman »
Java is to Javascript as fun is to funeral.

http://nau4i.me/forum/index.php/topic,15129.0.html

kudev

  • Newbie
  • *
  • Благодарности
  • -Казани: 4
  • -Получени: 0
  • Публикации: 17
Re: Адресна книга (част 1)
« Отговор #46 -: 05 Май 2013, 12:29:04 »
Мерси, колега.

Да това е от недоглеждане оправих го.

А проблема с недефинираната променлива го разреших по този начин, като добавих isset вътре във if

Код: PHP
  1. if (isset($_SESSION['is_logged']) === true) {
  2.             echo "logged";
  3.             //TODO list of friends
  4.         }
  5. .
  6. .
  7. .
  8.  
  9.  

Tinyiso

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 4
Re: Адресна книга (част 1)
« Отговор #47 -: 17 Март 2014, 11:56:13 »
index.php
Код: PHP
  1. <?php
  2. ?>
  3. <!DOCTYPE html>
  4. <html>
  5.     <head>
  6.         <meta charset="UTF-8">
  7.         <title></title>
  8.     </head>
  9.     <body>
  10.      
  11.  
  12.          <?php
  13.          if(isset($_SESSION['is_logged'])==true){
  14.              echo "<a href='logout.php'>Logout</a>";
  15.         } else {
  16.  
  17.             if (isset($_GET['error'])==1) {
  18.                 echo 'wrong Username/Password';
  19.                
  20.             }
  21.         }
  22.         ?>
  23.            <form method="post" action="login.php">
  24.             Username:<input type="text" name="login"><br>
  25.             Password:<input type="password" name="pass">
  26.             <input type="submit" value="login">
  27.             </form>
  28.        
  29.  
  30.     </body>
  31. </html>
  32.  

login
Код: PHP
  1. <?php
  2. $login = trim($_POST['login']);
  3. $pass = trim($_POST['pass']);
  4. if (strlen($login)>3 && strlen($pass)>3)
  5.     {
  6.     if ($login == "myself" && $pass == "qwerty") {
  7.         $_SESSION['is_logged'] = true;
  8.         header("Location : index.php");
  9.     } else
  10.         {
  11.         header('Location: index.php?error=1');
  12.         }
  13. }
  14.  
logout
Код: PHP
  1. <?php
  2. header('Location: index.php');
  3.  
Здравейте, имам малък проблем с този код,  препратките и някои проверки не се изпълняват,а не мога да си намеря грешката.
Поздрави!

Avalanche

  • Administrator
  • Hero Member
  • *****
  • Благодарности
  • -Казани: 65
  • -Получени: 275
  • Публикации: 2602
  • meow
Re: Адресна книга (част 1)
« Отговор #48 -: 17 Март 2014, 12:17:12 »
Здравей и добре дошъл,

проблемът е в login на ред номер 9, имаш едно празно пространство преди двете точки - махни го и ще тръгне.

П.С. Ще добавя че е хубаво да слагаш и exit след header функцията, така ще спреш евентуалното изпълнение на останалия код - в твоя случай няма такъв, но е добра практика.
« Последна редакция: 17 Март 2014, 12:19:41 от Avalanche »
"Компютрите не правят каквото искаме, а каквото им кажем." Ако разбереш какво значи това няма да имаш големи проблеми, нито с никоя ОС, нито език, или софтуер.
Аз не съм програмист между другото!

Tinyiso

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 4
Re: Адресна книга (част 1)
« Отговор #49 -: 17 Март 2014, 19:07:30 »
Благодаря Ви много , от 2 дена се чудя и го гледам този код и не мога да разбера какво му е грешно.

amxx

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Адресна книга (част 1)
« Отговор #50 -: 29 Март 2016, 16:34:27 »
Здравейте на всички.Кода си работи логва се излиза обаче горе над името и паролата ми излиза следната грешка -

Notice: Undefined index: login in D:\xampp\htdocs\friends\index.php on line 16

Notice: Undefined index: pass in D:\xampp\htdocs\friends\index.php on line 17

Ето и кода:
Код: PHP
  1. <?php
  2. ?>
  3. <!DOCTYPE html>
  4. <html>
  5.     <head>
  6.         <meta charset="UTF-8">
  7.         <title></title>
  8.     </head>
  9.     <body>
  10.         <?php
  11.         if (isset($_SESSION['is_logged'])==true) {
  12.             //T0D0 list of friends
  13.             echo '<a href="logout.php">Logout</a>';
  14.         }  else {
  15.             $login=trim(addslashes($_POST['login']));
  16.             $pass=trim(addslashes($_POST['pass']));
  17.             if (strlen($login)>3 && strlen($pass)>3) {
  18.                 if ($login=="stefan" && $pass="asdasd") {
  19.                     $_SESSION['is_logged']=true;
  20.                     header('Location:index.php');
  21.                 }else{  
  22.                     echo 'wrong username/password';
  23.                 }
  24.             }
  25.             ?>
  26.                 <form method="post" action="index.php">
  27.                     Username:</br><input type="text" name="login"/></br>
  28.                     Password:</br><input type="password" name="pass"/></br>
  29.                     <input type="submit" value="Login"/>
  30.                 </form>    
  31.             <?php
  32.         }
  33.         ?>
  34.     </body>
  35. </html>
  36.  

Zorko

  • Full Member
  • ***
  • Благодарности
  • -Казани: 33
  • -Получени: 9
  • Публикации: 206
Re: Адресна книга (част 1)
« Отговор #51 -: 29 Март 2016, 18:34:41 »
Здравей и добре дошъл в Научи.Ме! :)
Значи това е често срещана грешка при начинаещите. Така написан кода, всеки път проверява за POST променливите login и pass (дори когато не е изпратена формата)
За да се избегнат грешките трябва да се направи първо проверка дали е изпратена формата, и тогава да се взимат login и pass.

Ето как трябва да изглежда кода:
<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title></title>
    </head>
    <body>
        <?php
        
if (isset($_SESSION['is_logged'])==true) {
            
//T0D0 list of friends
            
echo '<a href="logout.php">Logout</a>';
        }  else {
            
// правим проверка дали е изпратена формата
            // като проверяваме дали не е празен масива _POST, ако не е празен
            // значи са изпратени данни и може да реализираме логиката за входа
            
if (!empty($_POST)) {
                
$login=trim(addslashes($_POST['login']));
                
$pass=trim(addslashes($_POST['pass']));
                if (
strlen($login)>&& strlen($pass)>3) {
                    if (
$login=="stefan" && $pass="asdasd") {
                        
$_SESSION['is_logged']=true;
                        
header('Location:index.php');
                    }else{  
                        echo 
'wrong username/password';
                    }
                }
            }
            
?>

                <form method="post" action="index.php">
                    Username:</br><input type="text" name="login"/></br>
                    Password:</br><input type="password" name="pass"/></br>
                    <input type="submit" value="Login"/>
                </form>   
            <?php
        
}
        
?>

    </body>
</html>
 

П.П.: Тези грешки са от тип Notice, тоест не са много фатални и кода ще си работи без проблем, но е добра практика да ги отстраняваме :)

amxx

  • Newbie
  • *
  • Благодарности
  • -Казани: 0
  • -Получени: 0
  • Публикации: 9
Re: Адресна книга (част 1)
« Отговор #52 -: 30 Март 2016, 14:02:45 »
Благодаря