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

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

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

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    Сможешь ты - сможет любой. Ты у себя должен инклудить в коде:

    include "script.php";
     
  2. ronald

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

    Joined:
    27 Mar 2008
    Messages:
    252
    Likes Received:
    42
    Reputations:
    6
    а как SQL-инъекцию через адресную строку можно или опять "PHP-серверный язык"?
     
  3. gisTy

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

    Joined:
    24 May 2008
    Messages:
    432
    Likes Received:
    160
    Reputations:
    27
    шел бы ты учил PHP/SQL... не задавал бы таких вопросов
     
  4. UnPazz

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

    Joined:
    30 Aug 2008
    Messages:
    95
    Likes Received:
    43
    Reputations:
    6
    прочитай, что делает функция htmlspecialchars на php.
     
  5. Buffalon

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

    Joined:
    22 Mar 2008
    Messages:
    241
    Likes Received:
    34
    Reputations:
    8
    Всё сводиться к тому что мы должны проверять выходные параметры;
    Понял?
     
  6. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    вывожу инвормацию с базы в выподающее меню

    PHP:
    <select name="data">
    <?

    $result = mysql_query("SELECT * FROM data",$db);

    if (!$result)
    {
    echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(mysql_error());
    }

    if (mysql_num_rows($result) > 0)

    {
    $myrow = mysql_fetch_array($result); 

    do 
    {
    printf ("<option value='%s'>%s</option>",$myrow["id"],$myrow["name"]);



    }
    while ($myrow = mysql_fetch_array($result));
     
    }

    else
    {
    echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }

    ?>
    </select>
    Вопрос:

    Как мне зделать так чтоб при выбори в меню пункта (
    в данном случае это картинка) она выводилась ниже.

    в тоблице 3 поля id, name, url,

    ????????????????????????????????????????????
     
  7. [dei]

    [dei] Active Member

    Joined:
    24 Nov 2008
    Messages:
    171
    Likes Received:
    112
    Reputations:
    5
    php.net/функция
     
  8. KillDead

    KillDead New Member

    Joined:
    15 Sep 2008
    Messages:
    31
    Likes Received:
    2
    Reputations:
    0
    она выводилась ниже- кто картинка выводилась ?
     
  9. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    После того как выподающий список у меня в скрипте заполняется из базы я хочу зделать так чтоб при выборе из этого списка картинки она выводилась на экран ниже! как это зделать???
     
  10. KillDead

    KillDead New Member

    Joined:
    15 Sep 2008
    Messages:
    31
    Likes Received:
    2
    Reputations:
    0
    Тебе надо именно на php? Просто тебе большет подайдёт js, вот набросал немного кода:
    PHP:
    <html>
    <
    head>
    <
    title>1</title>
    </
    head>

    <
    body><script>

    var 
    uagent    navigator.userAgent.toLowerCase();
    var 
    is_safari = ( (uagent.indexOf('safari') != -1) || (navigator.vendor == "Apple Computer, Inc.") );
    var 
    is_ie     = ( (uagent.indexOf('msie') != -1) && (!is_opera) && (!is_safari) && (!is_webtv) );
    var 
    is_ie4    = ( (is_ie) && (uagent.indexOf("msie 4.") != -1) );
    var 
    is_moz    = (navigator.product == 'Gecko');
    var 
    is_ns     = ( (uagent.indexOf('compatible') == -1) && (uagent.indexOf('mozilla') != -1) && (!is_opera) && (!is_webtv) && (!is_safari) );
    var 
    is_ns4    = ( (is_ns) && (parseInt(navigator.appVersion) == 4) );
    var 
    is_opera  = (uagent.indexOf('opera') != -1);
    var 
    is_kon    = (uagent.indexOf('konqueror') != -1);
    var 
    is_webtv  = (uagent.indexOf('webtv') != -1);

    var 
    is_win    =  ( (uagent.indexOf("win") != -1) || (uagent.indexOf("16bit") !=- 1) );
    var 
    is_mac    = ( (uagent.indexOf("mac") != -1) || (navigator.vendor == "Apple Computer, Inc.") );
    var 
    ua_vers   parseInt(navigator.appVersion);


    var 
    selField  "center";




    function 
    getOffsetLeft(obj)
    {
        var 
    top obj.offsetLeft;
        
        while( (
    obj obj.offsetParent) != null )
        {
            
    top += obj.offsetLeft;
        }
        
        return 
    top;
    };

    function 
    getOffsetTop(obj)
    {
        var 
    top obj.offsetTop;
        
        while( (
    obj obj.offsetParent) != null )
        {
            
    top += obj.offsetTop;
        }
        
        return 
    top;
    };

    function 
    ins_w(element)
    {
            var 
    buttonElement document.getElementById(element);
            
    document.getElementById(element).focus();

            if ( 
    is_ie )
            {
                
    document.getElementById(element).focus();
                
    ie_range_cache document.selection.createRange();
            }
            
                
        
    iLeftPos  getOffsetLeft(buttonElement);        
            return     
    iLeftPos;
            

            

    };

    function 
    ins_h(element)
    {
            var 
    buttonElement document.getElementById(element);
            
            
    document.getElementById(element).focus();

            if ( 
    is_ie )
            {
                
    document.getElementById(element).focus();
                
    ie_range_cache document.selection.createRange();
    }
            
            return  
    iTopPos   getOffsetTop(buttonElement)+ buttonElement.offsetHeight+10 ;

    };

    function 
    image_creat(val_idsrc){

    div_img document.getElementById('div_imges');


    div_img.style.visible 'block';
    while (
    div_img.firstChild)div_img.removeChild(div_img.firstChild);
    div_img.innerHTML '<img src="'+src+'" />';

    div_img.style.left ins_w(val_id);
    div_img.style.top ins_h(val_id);


    }


    </script>


    <table border="1" width="100%" id="center">
        <tr>
            <td>
            <img border="0" src="http://imgl.yandex.net/i/www/logo1.png" onclick="image_creat(this.id, this.src)" id="q" width="178" height="120"></td>
            <td>
            <img border="0" src="http://imgl.yandex.net/i/www/logo1.png"  onclick="image_creat(this.id, this.src)" id="qq" width="178" height="120"></td>
            <td>
            <img border="0" src="http://imgl.yandex.net/i/www/logo1.png" onclick="image_creat(this.id, this.src)" id="qwq" width="178" height="120"></td>
            <td>
            <img border="0" src="http://imgl.yandex.net/i/www/logo1.png" onclick="image_creat(this.id, this.src)" id="qwdq"width="178" height="120"></td>
            <td>
            <img border="0" src="http://imgl.yandex.net/i/www/logo1.png" onclick="image_creat(this.id, this.src)" id="qqqqq" width="178" height="120"></td>
        </tr>
    </table>
    <div style="position: absolute; width: 100px; height: 100px; z-index: 1; visible:none; left:729px; top:261px" id="div_imges">
    &nbsp;</div>

    <p>
    </p>
    </body>
     
  11. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Большое спасибо конечно но там такой скрипт что подгрузка картинок идёт именно с базы Mysql в выежающий список <select>!!!

    PHP:
    <select name="data">
    <?  //меню выбора картинки

    $result = mysql_query("SELECT * FROM data",$db);

    if (!$result)
    {
    echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(mysql_error());
    }

    if (mysql_num_rows($result) > 0)

    {
    $myrow = mysql_fetch_array($result); 

    do 
    {
    printf ("<option value='%s'>%s</option>",$myrow["id"],$myrow["name"]);



    }
    while ($myrow = mysql_fetch_array($result));
     
    }

    else
    {
    echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }

    ?>
    </select>
    Если после загрузки этого кода посмотреть HTML
    То получится вот так:

    PHP:
    <select name="data">
    <
    option value='1'>1228856272_23047.jpg</option><option value='2'>1228856289_401_1.jpg</option><option value='3'>1228856322_x_7620d92b.jpg</option></select>
    При выбори картинке поле выбора <option> должно получить значение select и потом ниже выводиться содержимое этого поля! Как это можно реализовать в PHP????
     
  12. KillDead

    KillDead New Member

    Joined:
    15 Sep 2008
    Messages:
    31
    Likes Received:
    2
    Reputations:
    0
    тогда это не выподающее меню а выподающий список. ;)
    В чём тогда проблема? - просто делаешь форму
    PHP:
    <form method="POST" action="">...
    А потом просто разбираешь пост запрос и выбираешь выбранную картинку
    PHP:
     $id $_POST['data'];
    if(
    is_int($id)===FALSE )exit("HAKING");

    $result mysql_query("SELECT * FROM data WHERE id='.$id",$db); 
    ...
    printf ("<img src='%s' />",$myrow["url"]); 
     
  13. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Помоге добить скрипт???

    Ирархия папок:
    _______________________________________

    fotos
    2.jpg (картинка загруженая пользователем)
    admin
    data
    1.jpg (картинки загруженные админом)
    index.php
    db.php
    load.php
    index.php
    db.php
    load.php

    MySQL
    ________________________________________

    имя базы img
    таблица 1: foto (Поля: id, name, url) для пользвателя
    таблица 2: data (Поля: id, name, url) для админа

    ________________________________________

    коды:

    index.php

    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">
    <
    head>
    <
    meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <
    title>Загрузка</title>
    </
    head>

    <
    body>
    <
    form enctype="multipart/form-data" method="POST" action="load.php"

    <
    b>Фото:</b><br /> 
    <
    input type="file" name="myfile" style="width:304px; height:18px" id="myfile" /> 

    <
    br /><br /> 
    <
    input style="height: 35px;" type="submit" value="Добавить фото" name="submit"

    </
    form>  



    </
    body>
    </
    html>
    load.php

    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">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
    <title>Untitled Document</title>
    </head>

    <body>
    <?php 

    // Подключаемься к базе данных 

    include ("db.php"); 

    //================Настройки============= // 
    $maxwidth "300px"// максимальная ширина картинок на превью 
    $fotos_dir "fotos/"// Директория для фотографий товаров 
    $foto_name $fotos_dir.time()."_".basename($_FILES['myfile']['name']); // Полное имя файла вместе с путем 
    $foto_light_name time()."_".basename($_FILES['myfile']['name']); // Имя файла исключая путь 
    $foto_tag "<img src=\"$foto_name\" border=\"0\">"// Готовый тэг для вставки картинки на страницу 
    $foto_tag_preview "<img src=\"$foto_name\" border=\"0\" width=\"$maxwidth\">"// Тот же тэг, но для превью 

    // Текст ошибок 
    $error_by_mysql "<span style=\"font: bold 15px tahoma; color: red;\">Ошибка при добавлении данных в базу</span>"
    $error_by_file "<span style=\"font: bold 15px tahoma; color: red;\">Невозможно загрузить файл в директорию. Возможно её не существует</span>"



    // Начало 
    if(isset($_FILES["myfile"])) 

    $myfile $_FILES["myfile"]["tmp_name"]; 
    $myfile_name $_FILES["myfile"]["name"]; 
    $myfile_size $_FILES["myfile"]["size"]; 
    $myfile_type $_FILES["myfile"]["type"]; 
    $error_flag $_FILES["myfile"]["error"]; 

    // Если ошибок не было 
    if($error_flag == 0

             
         
    $DOCUMENT_ROOT $_SERVER['DOCMENT_ROOT']; 
    $upfile getcwd()."\\fotos\\" time()."_".basename($_FILES["myfile"]["name"]); 
    if (
    $_FILES['myfile']['tmp_name']) 


       
    //Если не удалось загрузить файл 

    if (!move_uploaded_file($_FILES['myfile']['tmp_name'], $upfile))  

    echo 
    "$error_by_file"
    exit; 



    else 

        echo 
    'Проблема: возможна атака через загрузку файла. '
        echo 
    $_FILES['myfile']['name']; 
        exit; 



    // После удачной обработки файла, выводим сообщение 
    echo "<h3>Результат добавления товара:</h3> <br />"
    echo 
    "<b>Файл успешно скопирован в директорию:</b> ".$fotos_dir." <br /><b>Имя файла:</b> ".$foto_light_name."<br />"
    echo 
    "<br /><small>Превью загруженной картинки:</small> <br />$foto_tag_preview<br /><br />"



    // Заносим путь картинки в базу данных 
    $q "INSERT INTO foto (url,name) VALUES ('$foto_name','$foto_light_name')"
    $query mysql_query($q); 


    // Данные успешно внесены в базу данных, выводим сообщение 
    if ($query == 'true') { 
    echo 
    "<br /><b>Данные успешно внесены в базу</b>"


    // В противном случае, выводим ошибку при добавлении в базу данных 
    else { 
    echo 
    "$error_by_mysql"



            } 
      
     elseif (
    $myfile_size == 0) { 
     echo 
    "Пустая форма!"
     }  
         



    ?><br>
    <form id="form1" name="form1" method="post" action="end.php">
        <?  //меню выбора картинки
    $result = mysql_query("SELECT * FROM data",$db);

    if (!$result)
    {
    echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору [email protected]. <br> <strong>Код ошибки:</strong></p>";
    exit(mysql_error());
    }

    if (mysql_num_rows($result) > 0)

    {
    $myrow = mysql_fetch_array($result); 

    do 
    {

    printf ("<img src='admin/%s'><input name='id' type='radio' value='%s'><label>%s</label><br>",$myrow["url"],$myrow["id"],$myrow["name"]);



    }
    while ($myrow = mysql_fetch_array($result));
     
    }

    else
    {
    echo "<p>Информация по запросу не может быть извлечена в таблице нет записей.</p>";
    exit();
    }

    ?>
      <label>
      <input type="submit" name="prev" id="prev" value="Submit" />
      </label>
    </form>
    </br></br>


    </body>
    </html>
    ___________________________________________

    Помогите дописать голова чето устала нада создать php файл end.php и чтоб при загрузке фото, и выборе картинки из базы это то что в load.php
    эти две картинки обьеденялись в одну в файле оброботчика end.php????
     
  14. Ershik

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

    Joined:
    7 Nov 2007
    Messages:
    301
    Likes Received:
    46
    Reputations:
    6
    Есть выражение:
    Как можно дописать, чтобы просканировав каталог с различными файлами типа: jpg, php и html подобными, можно было скачать архив в расширении gz?
    Просмотрев исходники подобных программ, думаю, что нужно делать цикл, типа
    Прошелся по одномй директории, admin, к примеру - добавил в архив test.gz,
    Прошелся по директории templates - еще раз добавил.
    Здесь должен быть цикл while, но, увы я их вообще не понимаю :(

    Решение найдено!
    http://forum.antichat.ru/thread53918.html
    Спасибо DIAgen
     
    #6674 Ershik, 10 Dec 2008
    Last edited: 10 Dec 2008
  15. ss88

    ss88 Banned

    Joined:
    27 Nov 2008
    Messages:
    160
    Likes Received:
    44
    Reputations:
    5
    Испытал эту гадость на одном из своих сайтов (додумался, блин)...
    Вобщем, было определено, что максимально допустимое количество одновременно открытых дескрипторов файлов в Юниксах раз 5-7 больше, нежели у Винды, тем не менее, исчерпались они за секунду другую, так-как здесь сервер уже борется локально сам с собой... Очень быстро исчерпываются порты и ОЗУ, нагрузка на процессоры идет волнообразная... Теоретически, вечный двигатель, при условии наличия идеального сервера с бесконечными ресурсами ))) Но цепочка все же вернулась к родителю, когда кол-во портов было исчерпано, из этого можно сделать вывод, что бесконечный цикл самоподключения сделать стоит...

    После этого эксперимента, мой хостинг-аккаунт в течение 3-х минут был отключен админами... Зато они почистили директорию, в которой расплодилось семейство этих глюков, оставили родителя, но перенесли в каталог "a po licu?" )))) А в комменты после "привет от ss88" дописали "и тебе привет, по лицу бы тебе, но скрипт интересный. admins" )))

    Вот такая забавная история. К чему это все, к тому, что, обращаюсь к новичкам, ресурсы сервера не безграничны. Зато порой видишь скрипты, которые грузят может и не так сильно но вполне прилично, не выполняя особо ничего полезного. Так что, если когда-то экономили биты и байты, то это не означает, что экономить их сейчас не стоит. ВотЪ
    Спасибо за внимание!
     
    #6675 ss88, 11 Dec 2008
    Last edited: 11 Dec 2008
    1 person likes this.
  16. Ershik

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

    Joined:
    7 Nov 2007
    Messages:
    301
    Likes Received:
    46
    Reputations:
    6
    Объясните мне логику действии, то есть где я не прав, и почему мне не удается прикрутить форму выбора директории к файлу
    http://forum.antichat.ru/thread53918.html


    Я добавил:
    PHP:
    <form action="" method="post">   
    Скопировать файлы <input type="text" name="dir"> <input type="submit" name="ok4"></form>
    <?php
    if($_POST['dir'] and $_POST['ok4']) {   
        
    $dir $_POST['dir'];  
    }
    ?>
    Затем взял функцию сжатия и указал такой же тип переменной $dir как выше:
    PHP:
    function _readdir($d,&$files) { 
    global 
    $opendir
    [
    B]$dir[/B] = opendir ($d); 
      while ( 
    $file readdir ($dir)) 
      { 
         if (( 
    $file != ".") && ($file != "..")) 

       
    $opendir=$d.'/'.$file
             if(
    filetype($opendir)=="dir"
            { 
            
    _readdir($opendir,&$files); 
            } 
            else 
            { 
             
    $files[] = $opendir

       } 
       } 

       
    closedir ($dir); 
     } 
    Далее нужно указать путь директории.
    Указал, но мне до сих пор предлагаю сохранить пуской каталог, не предлагая альтернативы:
    PHP:
    _readdir == $files// ТУт указываем полный путь до папки которую нужно жать.... 
     
  17. PaCo

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

    Joined:
    6 Feb 2008
    Messages:
    436
    Likes Received:
    138
    Reputations:
    25
    Бред, это условие всегда будет возврашать false, по тому как form input, which is always a string
    лутчше использовать
    if(is_numeric ($id)===FALSE )exit("HAKING");
     
    1 person likes this.
  18. D1mka

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

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    почему не работает цикл? foreach
    PHP:
    <?php
    $arr
    =array("1","2","3");
    foreach(
    $arr=$value)
    {
    echo 
    "Next number: $value <BR>";
    }
    ?>
    v
     
  19. 159932

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

    Joined:
    28 Sep 2007
    Messages:
    587
    Likes Received:
    462
    Reputations:
    5
    foreach($arr as $value)

    php.net/foreach - слабо зайти и посмотореть?
     
    3 people like this.
  20. D1mka

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

    Joined:
    2 Jan 2008
    Messages:
    123
    Likes Received:
    14
    Reputations:
    2
    епт, незаметил as
    спасибо
     
Thread Status:
Not open for further replies.