[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. bobob

    bobob Member

    Joined:
    2 Jun 2006
    Messages:
    111
    Likes Received:
    69
    Reputations:
    -15
    первый мой скриптенг калькуля:

    PHP:
    <html> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /> 
    <title>Калькулятор</title> 
    </head> 
    <body> 
    <h3 align="center">Калькулятор</h3> 
    <div align="center"> 
      <form method="get"> 
      <input name="ch1" type="text" size="15" maxlength="10" /> 
      <input name="ch2" type="text" size="15" maxlength="10" /> 
      <input type="submit" value="Считать" /> 
      </form> 
    <?php 
    $ch1
    =$_GET['ch1']; 
    $ch2=$_GET['ch2']; 
    $summa=$ch1+$ch2
    $raznitsa=$ch1-$ch2
    $umnozhenie=$ch1*$ch2
    $delenie$ch1/$ch2
    if (
    $ch2 == 0){ echo "Делить на ноль нельзя";} 
    else { echo 
    "Ваши числа: $ch1 и $ch2, их сумма $summa, разница $raznitsa, умножение $umnozhenie, деление $delenie"; } 
    ?>   
    <br /> 
    <br /> 
    </div> 
    </body> 
    </html>
    имеем ошибку вот тут $delenie=$ch1/$ch2;
    Warning: Division by zero in ...

    подскажите.... смотрел калькули на пхп, тоже тупо "переменная / переменная" пишут, а у мя ошибка :mad:
    но калькуль пашет справно :D
     
    #1921 bobob, 13 Feb 2008
    Last edited: 14 Feb 2008
  2. lsass.exe

    lsass.exe Elder - Старейшина

    Joined:
    5 Aug 2007
    Messages:
    156
    Likes Received:
    161
    Reputations:
    24
    у тебя выдает ошибку деления на 0, сначала делай проверку, а потом уже выполняй действия а не наоборот ))
     
  3. bobob

    bobob Member

    Joined:
    2 Jun 2006
    Messages:
    111
    Likes Received:
    69
    Reputations:
    -15
    да, про деление на 0 эт я додуплился, пасиб, шяс буду пробывать)

    плиа
     
    #1923 bobob, 14 Feb 2008
    Last edited: 14 Feb 2008
    2 people like this.
  4. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    @$delenie= $ch1/$ch2 or die ("Делить на ноль низя!");
     
    3 people like this.
  5. bobob

    bobob Member

    Joined:
    2 Jun 2006
    Messages:
    111
    Likes Received:
    69
    Reputations:
    -15
    о! реал, пашет без ерора! ну про собачку я еще не читал просто, только начал недавно)
     
  6. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    МОжешь попробовать такой код:
    PHP:
    <?php  
    @$ch1=$_GET['ch1'];  
    @
    $ch2=$_GET['ch2'];  
    $summa=$ch1+$ch2;  
    $raznitsa=$ch1-$ch2;  
    $umnozhenie=$ch1*$ch2;
    if (!empty(
    $ch2)) {
    @
    $delenie$ch1/$ch2 or die('Ошибка деления');  
    }else die(
    "Введите числа для подсчета");
    echo 
    "Ваши числа: $ch1 и $ch2, их сумма $summa, разница $raznitsa, умножение $umnozhenie, деление $delenie"
    ?>    
    Ну не советую т.к. портица HTML код =)
     
    #1926 bul.666, 14 Feb 2008
    Last edited: 14 Feb 2008
    4 people like this.
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    bul.666, отвыкай от собачек и пиши верный код
    PHP:
    <?php
        $ch1    
    = (isset($_GET['ch1']))    ?    intval($_GET['ch1'])    :    ''    ;
    ?>
     
    2 people like this.
  8. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Народ, сорр за тупость но уже 2 дня сижу над сесиями. Кто может, подправть код чтоб он запоминал одмина:
    PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <style type="text/css">
    ......
     </style>
     <title>NF AUTH System</title>
     </head>
    <body>
    <center>
    <h1>Log<font color='green'>In Admin</font></h1>
    </center>
    <fieldset><legend><font color='red'>HERE>></font></legend>
    <form method="post" action="">
    <table class="form">

    <tr>
    <th>Login<font color="red">*</font></th>
    <td><input type="text" size="40" name="Login"  onblur="if(this.value=='')this.value='Your Login...';" onclick="if(this.value=='Your Login...')this.value='';" value="Your Login..." /></td>
    </tr>

    <tr>
    <th>Password<font color="red">*</font></th>
    <td><input type="password" size="40" name="Pass" value="" /></td>
    </tr>

    <tr><td><center><input type="submit" value=">>Enter<<" /></center></td></tr>
    </table>
    </form>
    </fieldset>
    <?php
    session_start
    (); 

     
    error_reporting(1);
     
    $Login=$_POST[Login];
     
    $Pass=$_POST[Pass];
       
    $md5_pass=md5(md5($Pass));
     IF(empty(
    $Login) OR empty($Pass)){die();}
     if (!isset(
    $_SESSION['login']) and !isset($_SESSION['password'])) echo("Admin's session isn't found!<br>");
      include(
    "config.php");
      
    $Login=stripslashes(htmlspecialchars($Login));
    if(
    $_SESSION['password']!=$md5_pass){
      if(
    $md5_pass!=$admin_password){die("<font color='red'>Incorect Login or Password was entered!");}else{
      
    $_SESSION['login']=$Login;
      
    $_SESSION['password']=$md5_pass;
      echo(
    "Access granted");
      echo
    "<center><font size=2>USER List</font></center>";}
      }else{
      
    //connect db
    echo "<center>";
     
    $link mysql_pconnect("$server_db""$user_db""$pass_db")
            or die(
    "<font color='red'>Could not connect: </font>" mysql_error());
        
        
    //select db
         
    if (mysql_select_db("$database")) {
          
        } else {

            
    printf ("<font color='red'>Error selecting database: %s\n</font>"mysql_error());
        }
        
         
    $get_info=mysql_query("SELECT * FROM `auth`");
        while(
    $row mysql_fetch_array($get_info))
      {
    $login=$row['login'];
    $password=$row['password'];
    $ip=$row['ip'];
    $mail=$row['mail'];
      echo(
    "<table width='100%'>
    <tr>
        <td width='15%'><div align=center>
    $login</div></td>
        <td width='26%'><div align=center>
    $password</center></td>
        <td width='29%'><div align=center>
    $ip</center></td>    
        <td width='30%'><div align=center>
    $mail</center></td>
    </tr>
    </table>"
    );
    }
    }
        



    ?>  
     
  9. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    При логине у тебя 1 раз запонимаются сессии т.к. стоит код
    PHP:
    $_SESSION['login']=$Login;
    $_SESSION['password']=$md5_pass;
    Но смотря на код подумай сам что будет при новом обращении на страницу...
    Опять смотрим этот код
    PHP:
    $_SESSION['login']=$Login;
    $_SESSION['password']=$md5_pass;
    Тем временем
    PHP:
     $Login=$_POST[Login];
    $Pass=$_POST[Pass];
    А пост запросов у тебя не было и поэтому значения в 0..
    Сессий нет...Вот так..
    Переписывай
     
    2 people like this.
  10. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Ниче не понял... Надо розобратся. А то уже мозги кипят ...
    Добавлено:
    Понял.. но мыслей по поводу как написать лутше нет. ;)
     
  11. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Убери сессии, делай на куках...

    //Перед записью в куки делай mysql_escape_string, и при проверке логина и пароля из кук через эту же функцию проводи...
     
    1 person likes this.
  12. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    HTML:
    <form method="post" enctype="multipart/form-data">
    				<table class="login">
    					<tr>
    						<td>Логин</td>
    						<td><input type="text" value="" name="login"></td>
    					</tr>
    					<tr>
    						<td>Пароль</td>
    						<td><input type="password" value="" name="password"></td>
    					</tr>
    					<tr>
    						<td></td>
    						<td><input type="button" name="sub" value="Войти" /></td>
    					</tr>
    				</table>
    				</form>
    Остальной код: http://pastebin.x3k.ru/110
     
  13. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    HTML:
    <form method="post" enctype="multipart/form-data">
    	<table class="login">
    		<tr>
    			<td>Логин</td>
    			<td><input type="text" value="" name="login" /></td>
    		</tr>
    		<tr>
    			<td>Пароль</td>
    			<td><input type="password" value="" name="password" /></td>
    		</tr>
    		<tr>
    			<td colspan="2"><input type="button" name="sub" value="Войти" /></td>
    		</tr>
    	</table>
    </form>
    PHP:
    <?php
        $password 
    md5($_POST['password']);
        
    $error '';

        if (!
    get_magic_quotes_gpc())
        {
             
    $_POST['login'] = mysql_escape_string($_POST['login']);
        }

        if(empty(
    $_POST['login']) || empty($_POST['password']))
        {
            
    $error .= 'Вы не ввели логин или пароль';
        }

        if(
    $error)
        {
            echo 
    "<div align='center'><div class='error'>".$error."</div></div>";
        }
        else
        {
            
    $query    "SELECT `login`, `pass` FROM `users` WHERE `login`='".$_POST['login']."' AND `pass`='".$password."'";
            
    $result    mysql_query($query);
            if(
    mysql_num_rows($result))
            {
                
    $row mysql_fetch_array($result);
                
    setcookie('user'$row['login'], time() + 86400 30 12);
                  
    setcookie('pass'$row['pass'], time() + 86400 30 12);
                echo 
    "<div align='center'><div class='complete'>Вы успешно зашли</div></div>";
            }
            else
            {
                echo 
    "<div align='center'><div class='error'>Логин или пароль не верен.</div></div>";
            }
        }
    ?>
    #Дальше определить админа так:
    PHP:
    <?php
        
    if (!get_magic_quotes_gpc())
        {
            
    $_COOKIE['user']    = mysql_escape_string($_COOKIE['user']);
            
    $_COOKIE['pass']    = mysql_escape_string($_COOKIE['pass']);
        }
        
    $query    mysql_query("SELECT * FROM `users` WHERE `login`='".$_COOKIE['user']."' AND `pass`='".$_COOKIE['pass']."'");
        if(
    mysql_num_rows($query)) $admin 1;

        if(
    $admin) echo 'Я админ';
    ?>
     
    #1933 banned, 15 Feb 2008
    Last edited: 15 Feb 2008
    1 person likes this.
  14. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Cпасибо чувак!
     
  15. Ershik

    Ershik Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    301
    Likes Received:
    46
    Reputations:
    6
    я хочу автоматизировать просмотр acces.log на аномальность =)
    Стал искать скрипт с самого начала, нашел вот это от Dr.Frank:
    Code:
    <?php
    $t=file("1.txt"); 
    $t=implode("\r\n",$t); 
    $t=str_replace("\r\nFucken","",$t); 
    $f=fopen("1.txt","w"); 
    fwrite($f,$t); 
    fclose($f);  
    ?>
    
    Скрипт ищет в текстовом документе слово "Fucken" и удаляет его.
    Я хочу, чтобы программа выдирала аномальные запросы и сохраняла их в текстовый файл. Пытался подредактировать по типу:
    Code:
    <?php
    $t=file("acces.log"); 
    $t=implode("\r\n",$t); 
    $t=str_save("\r\nNull","",$t); 
    $f=fopen("warn.txt","w"); 
    fwrite($f,$t); 
    fclose($f);  
    ?>
    Соглашаюсь сразу - написал неправильно, лишь недавно стал изучать php и то по возможности, когда появляется свободное время...
    Как правильно? В чем тут ошибка?
     
  16. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    Тот скрипт, который ты нашел - удаляет слово Fucken
    Чтобы найти что-то в файле и записать в файл - надо пользоваться регулярными выражениями
     
    3 people like this.
  17. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Ershik, напиши подробнее что тебе надо...
     
  18. Ershik

    Ershik Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    301
    Likes Received:
    46
    Reputations:
    6
    Macro, Мне бы до регулярных выражении дорасти. С константами разобраться не могу.

    мне нужна программа, которая сканирует файл access_log и выдирает из него подозрительные запросы.
    Вышеописанное он оставляет.
    А
    127.0.0.1 - - [18/Jan/2008:20:47:24 +0300] "GET /123.php HTTP/1.1" 200 4 "-" "Opera/9.25 (X11; Linux i686; U; en)"
    Или
    Он записывал в файл warn.txt. Главное, чтобы можно было самому добавлять в базу запросы, которые нужно искать.
     
  19. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    <?php
    $file 
    file('access_log');

    for(
    $i 0$i count('access_log'); $i++)
    {
         if(
    strpos('../'$file[$i]) !== false)
         {
                
    $fp fopen('clear_access, 'w+');
                fwrite($fp, $file[$i]);
                fclose($fp);
          }
    }
    ?>
    Что-то типа
     
  20. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    PHP:
    <?php
        $array 
    = array('union+select''/*''../');
        
    $old_file_name 'access.log';
        
    $new_file_name 'warn.txt';
        
    $file explode("\n"file_get_contents($old_file_name));
        
    $newfile = array();
        foreach(
    $file as $str) {
            foreach(
    $array as $string) {
                if(
    strpos($str$string) === true) {
                    
    $newfile[] = $str;
                    break;
                }
            }
        }
        
    $file fopen($new_file_name'w');
        
    fwrite($fileimplode("\n"$newfile));
        
    fclose($file);
    ?>
    $array - массив с подозрительными значениями.
    Исис, о_О.
     
Thread Status:
Not open for further replies.