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

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

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

    MafiaBoy3 Banned

    Joined:
    14 Apr 2007
    Messages:
    295
    Likes Received:
    15
    Reputations:
    1
    С этим тебе спасибо Naydav.

    Мне непонятно как вообще сделать разделы для сайта!
    У меня сейчас есть страница index.php (главная), login.php, register.php, logout.php.
    И с чего начать их делать непонятно?
     
  2. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    Смотря, что ты хочешь сделать
    Можно
    Примитивно - принимать в индексе переменную action, и на основе ее вызывать функцию(подключать модуль)

    Нормально - создать класс контроллер

    пс
    почитай о MVC, уверен найдешь много полезного, сам поймешь, что и к чему
     
  3. ZET36

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

    Joined:
    8 Oct 2007
    Messages:
    250
    Likes Received:
    49
    Reputations:
    0
    есть скрипт для загрузки файлов на сервер,


    PHP:
        <? error_reporting(15); /* Отображение ошибок РНР, 0 - не 

    отображать */
        $folder = '/'; /* Папка для загрузки файлов */
        $max_size = '50000'; /* Максимальный размер файла в байтах 

    */

        if($doupload) {
        $loads = $http_post_files;
        upload($loads, $folder, $max_size);
        }
        ?>

        <form enctype="multipart/form-data" action="upload.php" 

    method="post">
        <input name="data" type="file" size="25">
        <input name="doupload" type="submit" value="Загрузить">
        </form>

        <? function upload($loads, $folder, $max_size) {

        $fname = $loads['data']['name'];
        $ftype = $loads['data']['type'];
        $fsize = $loads['data']['size'];
        $ftmp_name = $loads['data']['tmp_name'];

        if($fsize <= $max_size && $fsize > '1') {
        unlink($folder.$fname);
        copy($ftmp_name, $folder.$fname);
        echo "Имя файла: <a href=$folder$fname 

    target=_blank><b>$fname</b></a> <br>";
        echo "Тип файла: <b>$ftype</b> <br>";
        echo "Размер: <b>";
        printf("%.2f", $fsize/1000);
        echo "</b> Кб";
        } else {
        if($fsize > $max_size) {
        echo "Слишком большой размер файла (больше <b>$max_size</b> 

    Байт)";
        }
        if($fsize <= '1') {
        echo "Слишком маленький размер файла (меньше <b>1</b> 

    Байта)";
        }
        }
        }
        ?>


    но при попытке загрузить файл постоянно вылазиет ошибка
    пожайлусто исправте ошибку
     
  4. Naydav

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

    Joined:
    30 Dec 2006
    Messages:
    439
    Likes Received:
    63
    Reputations:
    4
    1) Скрипт работает только при register_globals = on

    2) Вот тебе класс аплоада

    Применение
    Код нужно немного переделать для аплоада только 1 файла
    PHP:
    foreach($_FILES as $key=>$data)
                    {
                        
    $new explode('.',$data['name']);                
                        
    $fupload=& FileUploader::getInstance();
                        
    $fupload->_FILESKeyName=$key;
                        
    $fupload->newName$NewFileName
                        $fupload
    ->DestinationPath$DestinationPath;
                        
    $fupload->AddAllowedMIME('image/jpeg','image/pjpeg','image/gif','image/png');
                        
    $file $fupload->StartUpload();                
                        unset(
    $_FILES[$key]['name']);
                    }


    Сам класс:
    PHP:
    class FileUploader {
            
            var 
    $_FILESKeyName;
            
            var 
    $newNamefalse;
            
            var 
    $DestinationPath'./';
            
            var 
    $AllowedMIME= array();
            
            var 
    $isUploadedfalse;
            var 
    $ErrorMessage'';
            
            var 
    $UploadErrors = Array(
                
    0=>'There is no error, the file uploaded with success.',
                
    1=>'The uploaded file exceeds the upload_max_filesize directive in php.ini.',
                
    2=>'The uploaded file exceeds the MAX_FILE_SIZE directive that was specified in the HTML form.',
                
    3=>'The uploaded file was only partially uploaded.',
                
    4=>'No file was uploaded.',
                
    6=>'Missing a temporary folder.',
                
    7=>'Failed to write file to disk.',
                
    8=>'File upload stopped by extension.'
            
    );
            
            
            function 
    FileUploader() {
                
            }
            
            function 
    StartUpload() {            
                
    $_file$_FILES[$this->_FILESKeyName];
                if (
    $_file['error']!=0) {
                    
    $this->ErrorMessage$this->UploadErrors[$_file['error']];
                    return;
                }
                else {
                    if ( 
    count($this->AllowedMIME)>&& !in_array($_file['type'], $this->AllowedMIME)) {
                        
    $this->ErrorMessage'Wrong MIME type of uploaded file.';
                        return;
                    }
                    
                    
    // start uploading file
                    
    $this->getNewName($_file['name']);
                    
    move_uploaded_file($_file['tmp_name'], $this->DestinationPath.$this->newName);
                    return 
    $this->newName;
                }
            }
            
            function 
    getNewName($oldname) {
                
    $oldnameexplode('.'$oldname);
                
    $extentionstrtolower($oldname[count($oldname)-1]);
                
    array_splice($oldnamecount($oldname)-11);
                
    $oldnameimplode('.'$oldname);
                
                
    $this->newNamestrtolower($this->newName!==false $this->newName $oldname);
                
                
    $new_namepreg_replace("/[^a-z0-9]+/i"'_'$this->newName);
                
    $this->newName$new_name '.' $extention;

                
    $i1;
                while(
    file_exists($this->DestinationPath.$this->newName)) {
                    
    $this->newName$new_name '_' $i '.' $extention;
                    
    $i++;
                }
            }
            
            function 
    AddAllowedMIME() {
                
    $amountfunc_num_args();
                if (
    $amount>0) {
                    
    $argumentsfunc_get_args();
                    for(
    $i=0$i<$amount$i++)
                        
    array_push($this->AllowedMIME$arguments[$i]);
                }
            }
            
            function 
    ClearAllowedMIME() {
                
    array_splice($this->AllowedMIME0);
            }
            
            function &
    getInstance() {
                static 
    $instance;
                if (!
    $instance$instance= new FileUploader();
                return 
    $instance;
            }
        }
    Класс под php4, т.е не использует преимуществ php5
    Пользуйся классами - экономь время
     
    #3984 Naydav, 7 Jul 2008
    Last edited: 7 Jul 2008
    1 person likes this.
  5. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    PHP:
    preg_replace('/[^="\']("|\'|=|)(right)("|\'|=|)[^"\.\']/i''\\1<strong>\\2</strong>\\3'$text);
     
  6. bxN5

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

    Joined:
    8 Jan 2006
    Messages:
    687
    Likes Received:
    138
    Reputations:
    32
    Почитай про Zend Framework
     
    1 person likes this.
  7. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    Есть у когонить пример такого скрипта (хотябы подобие):
    Скрипт выводит список файлов в директории и рядом с ними ссылка или что то в этом роде при нажатии на которую файл уходит по почте.
     
  8. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    ну вот если по простому:
    PHP:
    <?php
    $directory
    "нужная директория";
    $dir opendir($directory);

    if(!isset(
    $_GET['file']))
    {
        while(
    $d=readdir($dir))
        {        
            if(
    is_file($d)) echo $d.'&nbsp;&nbsp;&nbsp; <a href="red.php?file='.$d.'">Отправить</a><br>';
        }
    }
    else
    {
        
    mail("куда отправляем","тема",file_get_contents($directory."/".$_GET['file']));
    }

    ?>
     
    1 person likes this.
  9. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Кхм...на сколько я помню просто функцией mail() аттач послать нельзя)) Точнее чтоб послать надо
    килограмм заголовков посылать вместе с содержимым.

    Вот отличный класс для работы с мылом:
    _http://dosug.dosugnn.ru/class.phpmailer.php.txt
     
    2 people like this.
  10. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    echo gethostbyaddr($_SERVER['REMOTE_ADDR']);
     
  11. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    gethostbyaddr()
     
    2 people like this.
  12. Doom123

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

    Joined:
    11 Nov 2006
    Messages:
    749
    Likes Received:
    244
    Reputations:
    22
    если на сайте(например майл.ру) есть добовление коментариев на аяксе ...
    как мне как на пхп имитировать такой запрос?

    я проверил куда отсылаются данные и какие данные ... на пхп отослал нужные пост значения на нужный скрипт но мессага не добавилась... как быть?
     
  13. scrat

    scrat кодер

    Joined:
    8 Apr 2007
    Messages:
    625
    Likes Received:
    541
    Reputations:
    3
    Попробуй сам отправь через XMLHttpRequest

    ps вообще этой страницы в теме не существует ;)
     
    #3993 scrat, 8 Jul 2008
    Last edited: 8 Jul 2008
    1 person likes this.
  14. -=Static=-

    -=Static=- Banned

    Joined:
    12 Nov 2006
    Messages:
    201
    Likes Received:
    40
    Reputations:
    0
    Скорее всего плохо проверил какие данные надо слать. Я когда для вконтакта писал посты в "Вопросы" тож геморно было...часа 2 упирался, не хотел нифига. Но справедливость восторжествовала)))
     
  15. MafiaBoy3

    MafiaBoy3 Banned

    Joined:
    14 Apr 2007
    Messages:
    295
    Likes Received:
    15
    Reputations:
    1
    Стоит ли узучать Zend? (Мне тут насоветовали: MVC, классы)
    читал это http://habrahabr.ru/blog/php/21327.html
    нифига и не понял. Да и чтобы сделать логин и логаут пользователя, нужно столько классов подключить да отредактировать.

    Дело в том, что я делаю интересный проект, свой первый сайт (мне 17 лет).
    И думаю о огромной посещаемости. Скажите разве yotube.com, digg.com, redtube.com работают на этом Zende , да и работают ли на классах вообще?
     
    1 person likes this.
  16. Lesnoy_chelovek

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

    Joined:
    6 Dec 2006
    Messages:
    224
    Likes Received:
    152
    Reputations:
    8
    MafiaBoy3, пока РНР нормально выучи. И первый твой сайт никогда не будет иметь бешеную популярность - закон жизни.
     
  17. zythar

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

    Joined:
    16 Feb 2008
    Messages:
    517
    Likes Received:
    109
    Reputations:
    5
    php слишком медленный чтобы на нем работали такие сайты как youtube. для них нужны более быстрые языки. так что если хочешь делать сайты такого уровня учи нормальные языки.
     
    1 person likes this.
  18. MafiaBoy3

    MafiaBoy3 Banned

    Joined:
    14 Apr 2007
    Messages:
    295
    Likes Received:
    15
    Reputations:
    1
    Вопрос был о работе с классами!

    И первый твой сайт никогда не будет иметь бешеную популярность - закон жизни.

    Ты чё будущее видишь? У других тоже не было , да?
    whateverlife.com, myyearbook.com и ещё куча других
     
  19. m0nsieur

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

    Joined:
    8 Apr 2008
    Messages:
    223
    Likes Received:
    69
    Reputations:
    10
    Я бы посоветовал посмотреть в сторону более простых(по началу Zend тяжел в освоении) и в то же время легко расширяемых фреймворков как например Code Igniter. Он тоже основан на модели MVC и без знания классов тут никуда. Имхо очень удобно.
     
  20. NeReVaR

    NeReVaR New Member

    Joined:
    16 May 2008
    Messages:
    3
    Likes Received:
    0
    Reputations:
    0
    Всем привет. У меня такой вот вопросик..
    Для того, чтобы добавить новый crontab - я создаю новый файл формата кронтаба, и теперь нужно запустить "CRONTAB /path.../myfile". Так вот - КАК запустить/выполнить любую команду в PHP для линукса (g ubuntu 8.04)?? Пробовал system() иexec(), но они почему-то не работают..
     
Thread Status:
Not open for further replies.