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

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

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

    VladZombie New Member

    Joined:
    18 Apr 2009
    Messages:
    47
    Likes Received:
    2
    Reputations:
    0
    Как сделать форму и обработчик в одном файле? пробовал содержимое обработчика вставить вместе с формой но он при заходе на страницу сразу же обрабатывает и записывает ((
     
  2. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,170
    Likes Received:
    1,155
    Reputations:
    202
    VladZombie
    Вот писал на днях на скорую руку, но вроде ошибок нет, писал как пример для друга.
    m0Hze
    Ну ты конечно и пример дал, лучше ничего не писать чем такое ляпнуть)))

    PHP:
    <?php
    include 'mysql.php';

    if( empty(
    $_POST['login']) || empty($_POST['passwd']) || empty($_POST['email']) || empty($_POST['passwd2']))
    {
        
    Form();
        exit;    
    }


    /* Filter LOGIN */
    if(empty($_POST['login']) || strlen($_POST['login']) < || strlen($_POST['login']) > 20 )
    {
    Form('Введите Логин, минимум 3 символа, максимум 20');
    exit;
    }
    if(!
    preg_match('#^[a-z0-9]{3,20}$#i',$_POST['login']))
    {
        
    form('НЕверный формат логина []');
        exit;
    }



    $_POST['login'] = addslashes($_POST['login']);


    /* Filter PASSWD */
    if(empty($_POST['passwd']))
    {
    Form('Введите пароль');
    exit;
    }
    if(
    $_POST['passwd'] != $_POST['passwd2'])
    {
        
    Form('Пароли не совпадают!');
        exit;
    }
    if(
    strlen($_POST['passwd'] < 6))
    {
        
    Form('Пароль слишком короткий, минимум 6 символов!');
        exit;
    }
    $_POST['passwd'] = md5(addslashes($_POST['passwd']));


    /* Filter EMAIL */
    if(empty($_POST['email']))
    {
    Form('Введите Имейл');
    exit;
    }
    if(
    strlen(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) <= 0)
    {
        
    Form('Неправильный формат Имейла!');
        exit;
    }
    $_POST['email'] = addslashes($_POST['email']);


    $sql "SELECT * FROM `users` WHERE login='$_POST[login]'";
    $DB = new db;
    $DB->connect('root','','socnet');
    $result $DB->query($sql);

    if( 
    $DB->num_rows($result) > 0)
    {
    echo 
    'Юзвер <b>'.$_POST['login'].'</b> уже есть в БД, бля';
    exit;
    }
    else
    {
    $sql "INSERT INTO users (`id`, `login`, `password`, `email`) VALUES (NULL, '$_POST[login]', '$_POST[passwd]', '$_POST[email]');";
    $result $DB->query($sql);
    if (!
    $result) {
        die(
    'Invalid query: ' mysql_error());
    } else {
        echo 
    "$_POST[login] - Удачно зарегестрирован!";
    }

    }

     
    function 
    Form($msg='Registration:')
    {
    echo <<<HTML

    <table align="center" border="1">
    <form method="post" enctype="application/x-www-form-urlencoded">
    <tr>
        <td colspan="2"><b>
    $msg</b></td>
        
    </tr>
    <tr>
        <td>Login ( => 3) :</td>
        <td><input type="text" align="CENTER" size="30" maxlength="30" name="login"></td>
    </tr>
    <tr>
        <td>Email:</td>
        <td><input type="text" align="CENTER" size="30" maxlength="30" name="email"></td>
    </tr>
    <tr>
        <td>Passwd:</td>
        <td><input type="password" align="CENTER" size="30" maxlength="30" name="passwd"></td>
    </tr>
    <tr>
        <td>Re-passwd:</td>
        <td><input type="password" align="CENTER" size="30" maxlength="30" name="passwd2"></td>
    </tr>
    <tr>
        
        <td colspan="2" align="center"><input type="submit" value="Register"></td>
    </tr>
    </form>
    </table>

    HTML;
    }

    ?>
     
  3. SeNaP

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

    Joined:
    7 Aug 2008
    Messages:
    378
    Likes Received:
    69
    Reputations:
    20
    Как бы есть фильтрация SQl-inj, нельзя передать число меньше 0 , но вот как зделать если у меня в БД 4 записи, и переменная ID = 1000(допустим) то у меня просто тупо белый экран.
    Как составить запрос, если у меня например 4 записи в БД, я передаю переменной id значение 1000, если в БД нет такой записи, естественно выдаем ошибку?

    PHP:
    if (isset($_GET['id']))
                {  
                    
    $idp = (int)$_GET['id'];
                        if (
    $idp <= '0') {
                                            echo 
    "Произошла ошибка!";
            }                                
                                            }
                    
    $sql1 mysql_query("SELECT * FROM `tetom` where `id`=".$idp."");
    }
     
  4. ANTIHАCK

    ANTIHАCK Member

    Joined:
    20 Jun 2009
    Messages:
    19
    Likes Received:
    7
    Reputations:
    0
    del
     
    #12864 ANTIHАCK, 24 Nov 2009
    Last edited: 22 Jun 2010
  5. DeluxeS

    DeluxeS Member

    Joined:
    1 Aug 2009
    Messages:
    7
    Likes Received:
    81
    Reputations:
    19
    Проверяешь isset'om переменные вот так:
    PHP:
    <?php
    if(isset($_POST["login"])) and isset($_POST["password"])) {
    ..
    //сравниваешь логин & password
    }
    else
    {
    //тут форма html ( <form action=..... ) 
    }
    В action вставялешь имя скрипта , или можешь
    PHP:
    <?=getenv("SCRIPT_NAME");?>
     
  6. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    есть форма:

    PHP:
            <form id="form">
                <
    center><h3>Добавление фирмы</h3></center>

                    <
    p><label>Название фирмы:</label><br><input type="text"/><br>
                    <
    p><label>Телефон:</label><br><input type="text"/><br>
                    <
    p><label>E-Mail:</label><br><input type="text"/>
                    <
    br/>
                    </
    p>
                    <
    p>Категория:<br />
                    <
    select  name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
                    <
    option>категории</option>
                    </
    select>
                    <
    br>
                    <
    br>
                    <
    label>Описание:</label>
                    <
    br>
                    <
    textarea name="text" cols="50" rows="4" wrap="virtual"></textarea>
                    <
    br>
                    <
    a href="end.php" class="lbAction" rel="insert"><button>Добавить</button>
                    </
    a>
                    <
    a href="#" class="lbAction" rel="deactivate"><button>Отменить</button>
                    </
    a>
                    </
    p>

            </
    form>
    как передовать переменые в таком виде формы?
     
  7. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    есть 2 варианта:
    1)это неправильный код (он не предусматревает отправку файлов на сервер)
    2)это не полный код(дополнить обращением к id из джаваскрипта - затрудняюсь, а к пхп отношения не имеет)

    ЗЫ надеюсь это не проблемы с HTML
     
    #12867 phpdreamer, 24 Nov 2009
    Last edited: 24 Nov 2009
  8. geforce

    geforce Member

    Joined:
    21 Aug 2008
    Messages:
    300
    Likes Received:
    26
    Reputations:
    -5
    Мне не надо передовать файлы на сервер! Мне нужно передать заначения ячеек в форме в php скрипт для обработки но только вот форма не обычная:

    PHP:
       <div align="center">
            <
    form id="form">
                <
    center><h3>Добавление фирмы</h3></center>

                    <
    p><label>Название фирмы:</label><br><input type="text" name="title"/><br>
                    <
    p><label>Телефон:</label><br><input type="text" name="tel"/><br>
                    <
    p><label>E-Mail:</label><br><input type="text" name="mail"/>
                    <
    br/>
                    </
    p>
                    <
    p>Категория:<br />
                    <
    select  name="jumpMenu" id="jumpMenu" onchange="MM_jumpMenu('parent',this,0)">
                    <
    option>категории</option>
                    </
    select>
                    <
    br>
                    <
    br>
                    <
    label>Описание:</label>
                    <
    br>
                    <
    textarea name="text" cols="50" rows="4" wrap="virtual"></textarea>
                    <
    br>
                    <
    a href="end.php" class="lbAction" rel="insert"><button>Добавить</button>
                    </
    a>
                    <
    a href="#" class="lbAction" rel="deactivate"><button>Отменить</button>
                    </
    a>
                    </
    p>

            </
    form>
       </
    div>
    Как мне это зделать???
     
  9. KrafT

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

    Joined:
    29 Nov 2004
    Messages:
    62
    Likes Received:
    2
    Reputations:
    0
    Помогите плс

    как зделать проверку есле на страницэ найдено $id=1 to
    PHP:
           $zapisj=fopen("F:\....\mailru.txt","a+");          fwrite($zapisj"$a[0]:$a[1]\r\n");
    ? а есле 0идс фаунд то неделает запись.
     
  10. Doger

    Doger New Member

    Joined:
    8 May 2007
    Messages:
    5
    Likes Received:
    4
    Reputations:
    0
    Хелп!

    Есть ссылка вида _http://site.ru/?a=123&lol=1

    от скрипта требуется автоматом посетить
    http://site.ru/?a=1&lol=1
    http://site.ru/?a=2&lol=1
    http://site.ru/?a=3&lol=1

    и так от 1 до 100000

    Заранее спасибо! С меня пиво и женщины! ;)
     
  11. Insane bboy

    Insane bboy New Member

    Joined:
    11 Jul 2009
    Messages:
    52
    Likes Received:
    3
    Reputations:
    0
    function curl($url)
    {
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)");
    url_exec($ch);
    curl_close($ch);
    }
    for($a = 1; $a < 100000; $a++) curl("http://site.ru/?a=$a&lol=1");
     
    #12871 Insane bboy, 25 Nov 2009
    Last edited: 25 Nov 2009
    1 person likes this.
  12. Insane bboy

    Insane bboy New Member

    Joined:
    11 Jul 2009
    Messages:
    52
    Likes Received:
    3
    Reputations:
    0
    вопрос не совсем понял, то есть надо на странице найти фразу $id=1? о0
    ну тогда так:

    if(strpos($result, '$id=1') !== false) // где $result страница на которой искать $id=1
    {
    $zapisj=fopen("F:\....\mailru.txt","a+");
    fwrite($zapisj, "$a[0]:$a[1]\r\n");
    }
     
  13. phpdreamer

    phpdreamer Member

    Joined:
    26 Jul 2009
    Messages:
    522
    Likes Received:
    86
    Reputations:
    19
    geforce, это описка
    я имел ввиду данные

    почему не сделать форму "обычной?"
    ну или тогда передавать данные через AJAX
     
  14. KaZ@NoVa

    KaZ@NoVa Elder - Старейшина

    Joined:
    5 Jul 2008
    Messages:
    368
    Likes Received:
    438
    Reputations:
    -16

    В этом коде нет обработки нулевого ID, btw

    Код этот я бы переписал так:

     
    1 person likes this.
  15. ZEXEL

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

    Joined:
    7 Jan 2008
    Messages:
    351
    Likes Received:
    193
    Reputations:
    3
    Подскажите как преобразововать такое !
    $a = "Hello World";
    $b = "Google G1";

    Как получить на выходе такое:
    $c = "/Hello_World/Google_G1/"

    Тоисть в начале и в конце /, а там где пробелы ставить _
     
  16. svesve

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11

    $a=str_replace(" ","_",$a);
    $b=str_replace(" ","_",$b);

    $c="/".$a."/".$b."/";

    echo $c;
     
    1 person likes this.
  17. superboy4

    superboy4 Banned

    Joined:
    17 Jul 2007
    Messages:
    151
    Likes Received:
    19
    Reputations:
    -8
    В таблице есть поле средний рейтинг (average_rating), поле это типа Целое число.
    Необходимо заполнить звёздочки рейтинга! Всего у меня 5 звёзд.
    Например поле средний рейтинг,ассоциирующееся с идентификатором 129 содержит число 3. Нужно соответсвено заполнить 3 звёздочки из 5, 3 будут золотыми, а 2 другие серыми.

    ps: сам рейтинг я уже реализовал, теперь нужно по работать с интерактивностью, то есть правильно заполнять звёздочки в соответсвие со средним рейтингом.
     
  18. KrafT

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

    Joined:
    29 Nov 2004
    Messages:
    62
    Likes Received:
    2
    Reputations:
    0
    PHP:
    if ($r_count=="1")
      {
    echo 
    "Soxronajem";
    file_put_contents($accs_file.'.eee.txt'"{$a[0]}:{$a[1]}");
        }
    как зделать чтоб он вписэвал так...
    akk:password
    akk:password
    akk:password
    а то он поверху записевает =[
     
  19. VDShark

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

    Joined:
    1 Feb 2007
    Messages:
    260
    Likes Received:
    158
    Reputations:
    62
    KrafT file_put_contents по умолчанию перезаписывает содержимое файла.
    Выходы:
    1) юзать ф-ции fopen(), fwrite() и тп
    2) установить флаг FILE_APPEND
     
  20. msi02

    msi02 New Member

    Joined:
    24 Nov 2009
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    Да ребята интерестно конечно пишут, но я видел статью об этом факте по подробнее на http://forum.gold-reg.ru/

    Не верите заходите и посмотрите сами!
    Извините если что не так!
     
Thread Status:
Not open for further replies.