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

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

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

    mustedlife New Member

    Joined:
    31 Jan 2013
    Messages:
    11
    Likes Received:
    3
    Reputations:
    0

    PHP:
    <?PHP   
    $Login 
    $_POST['Login'];    
    $Domain $_POST['Domain'];     
    $Pass $_POST['Password'];    
       
         
    $url 'https://auth.mail.ru/cgi-bin/auth';   
         
    $params "Login=".$Login."&Domain=".$Domain."&Password=".$Pass."&saveauth=1&new_auth_form=1&page=&post=&login_from=&lang=ru_RU&setLang=ru_RU";   
         
    $user_agent "Opera 10.0 (compatible; MSIE 5.01; Windows NT 5.0)";   
         
    $ch curl_init($url);   
         
    curl_setopt($chCURLOPT_POST,1);   
         
    curl_setopt($chCURLOPT_POSTFIELDS,$params);   
         
    curl_setopt($chCURLOPT_URL,$url);   
         
    curl_setopt($chCURLOPT_SSL_VERIFYPEER0);   
         
    curl_setopt($chCURLOPT_SSL_VERIFYHOST0);   
         
    curl_setopt($chCURLOPT_USERAGENT$user_agent);   
         
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);   
         
    $result=curl_exec($ch);   
         
    curl_close ($ch);   
         
    $pattern='/https:\/\/e.mail.ru\/login/';     
         if (!
    preg_match($pattern$result) == 0)    
             {    
            echo 
    "неправильный";   
            }    
         else    
             {   
             echo 
    "правильный";   
             };   
    ?>
    прочти http://www.zakonrf.info/uk/272/
     
    #22181 mustedlife, 23 Apr 2014
    Last edited: 23 Apr 2014
  2. Scofild

    Scofild Member

    Joined:
    26 Jun 2007
    Messages:
    29
    Likes Received:
    43
    Reputations:
    0
    Подскажите, вот есть такой скрипт удалённой заливки файлов на сервер
    PHP:
    <?php 
    $rc 
    stripslashes($_GET['url']); 
    $rc_path parse_url($rc); 
    $st './folder'.basename($rc_path['path']); 
    copy($rc,$st); 
    ?> 

    <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="GET"> 

    <input type="text" name="url" value="<?php echo $_GET['url']; ?>"> 

    <input type="submit"> 

    </form>
    Как туда добавить выпадающий список, где можно будет выбрать допустим из 3-х папок куда лить?
     
  3. Fox_NICK

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

    Joined:
    10 Jan 2007
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    Прошу совета %) нужно из input type=text передать информацию для формирования массива.
    Есть форма
    PHP:
    <form action="#" method="post"
    <
    input type="text" name="pole" value="">
    <
    input type="submit" name="submit" value="submit"
    </
    form>
     
    при вводе: "hi,world,!" получался массив: Array ( [0] => hi [1] => world [2] => ! )
    Запятой что бы разделяли элементы массива. Как реализовать? Буду благодарен за подсказку или за рабочий пример:)
     
  4. winstrool

    winstrool ~~*MasterBlind*~~

    Joined:
    6 Mar 2007
    Messages:
    1,414
    Likes Received:
    911
    Reputations:
    863

    PHP:

    $rc = stripslashes($_GET['url']); 
    $rc_path = parse_url($rc); 
    $st = './folder'.basename($rc_path['path']); 
    copy($rc,$st); 



    function get_leaf_dirs($dir) 
          {
             $array = array();
             $d = @dir($dir);
             if($d)
             {
                   while (false !== ($entry = $d->read())) 
                   {
                       if($entry!='.' && $entry!='..') 
                       {
                           $entry = $dir.'/'.$entry;
                           if(is_dir($entry)) 
                           {
                               $subdirs = get_leaf_dirs($entry);
                               if ($subdirs)
                                 $array = array_merge($array, $subdirs);
                               else
                                 $array[] = $entry;
                           }
                       }
                   }
                   $d->close();
             }
             return $array;
          }
          
          $fs=get_leaf_dirs('folder');
          $x=count($fs);
          
          
          

    ?>




    <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="GET"> 

    <input type="text" name="url" value="<?php echo $_GET['url']; ?>"> 
    <select class="input" type="text" name="patch"> 
    <?php for($i=0$i<$x$i++)
          {    echo 
    "<option value='".$fs[$i]."'>".$fs[$i]."</option>"; }
          
    ?>
    </select>

    <input type="submit"> 

    </form>


    вы наверное об этом?
    PHP:
    $x="hi,world,!";
    $y=explode(","$x);
    echo 
    $y['0'];
    echo 
    $y['1'];
    echo 
    $y['2'];
     
    _________________________
    #22184 winstrool, 25 Apr 2014
    Last edited: 25 Apr 2014
    1 person likes this.
  5. Fox_NICK

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

    Joined:
    10 Jan 2007
    Messages:
    45
    Likes Received:
    5
    Reputations:
    0
    Да, спасибо большое! забыл про explode :) +++++
     
  6. Darth Padla

    Darth Padla Member

    Joined:
    21 Jun 2010
    Messages:
    141
    Likes Received:
    25
    Reputations:
    8
    Голову поломал.
    код:
    PHP:
    if($_GET['code']){
        
    $data=file_get_contents('https://oauth.vk.com/access_token?client_id=мой ид&client_secret=секрет жеж)&code='.$_GET['code'].'&redirect_uri=http://shcoding.esy.es/dict/vk_login.php');
        
    $data=json_decode($data);
        
    print_r($data);
        if(
    $data->user_id){
            
    $hash=$data->access_token;
            
    $query=mysql_query("SELECT * FROM dt_users WHERE vk_id=".$data->user_id);
            if(
    $user=mysql_fetch_assoc($query)){
            
    //тут все ок
            
    }else{
                
    $link="https://api.vk.com/method/users.get?user_ids=".$data->user_id."&v=5.21&access_token=".$hash;
                
                    
                
    $vk_user=file_get_contents($link);
                
    $vk_user=json_decode($vk_user);
                
                echo 
    "<br><a href='".$link."'>".$link."</a><br>";    
                
                
    //ВОТ ТУТ ПУСТО! хотя при открытии ссылки отображается всё,как в документации
                
    print_r($vk_user);
                
    WTF??
     
    #22186 Darth Padla, 8 May 2014
    Last edited: 8 May 2014
  7. Scofild

    Scofild Member

    Joined:
    26 Jun 2007
    Messages:
    29
    Likes Received:
    43
    Reputations:
    0
    winstrool так почему то не работает. Нужно добавить к этому скрипту выпадающий список, где самому можно прописать постоянные названия папок. Т.е чтобы в этой переменной $st = './folder'.basename($rc_path['path']); из выпадающего списка выбираласьь папка.

    PHP:
    <?php  
    $rc 
    stripslashes($_GET['url']);  
    $rc_path parse_url($rc);  
    $st './folder'.basename($rc_path['path']);  
    copy($rc,$st);  
    ?>  

    <form action="<?php echo $_SERVER['SCRIPT_NAME']; ?>" method="GET">  

    <input type="text" name="url" value="<?php echo $_GET['url']; ?>">  

    <input type="submit">  

    </form>
     
  8. Peklots

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

    Joined:
    28 Sep 2008
    Messages:
    281
    Likes Received:
    144
    Reputations:
    36
    Есть такой кусок:
    PHP:
    $uploaddir "files/".$_SESSION['login'];
    if (
    move_uploaded_file($_FILES['document']['tmp_name'], $uploaddir.
    $_FILES['document']['name'])) {
    print 
    "Success!";
    } [...]
    Задается директория, которая заранее создается, после чего загруженный файл должен перемещаться в нее, но этого не происходит, а файл создается в files/ с именем $_SESSION['login'] и tmp_name. Что делать, как быть?)
     
  9. Chrome~

    Chrome~ Elder - Старейшина

    Joined:
    13 Dec 2008
    Messages:
    936
    Likes Received:
    162
    Reputations:
    27
    Не совсем ясна суть проблемы. Нужно, чтобы файл помещался в "files/$_SESSION['login']/$_FILES['document']['name']"? Если да, тогда:
    PHP:
    $uploaddir "files/".$_SESSION['login']."/";
     
    1 person likes this.
  10. Peklots

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

    Joined:
    28 Sep 2008
    Messages:
    281
    Likes Received:
    144
    Reputations:
    36
    Вы мало того, что в пхп шарите, дак еще и неплохой экстрасенс, спасибо :)
     
  11. Peklots

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

    Joined:
    28 Sep 2008
    Messages:
    281
    Likes Received:
    144
    Reputations:
    36
    PHP:
    <?php
    while( 
    $data mysql_fetch_array(mysql_query("select * from users where login = ".$_SESSION['login']))) {
    print (
    $data['name']. , .$data['lastname']);
    }
    ?>
    Чую тут что-то не так :D
    Нужно вывести из таблицы users, где логин $_SESSION['login'], поля name и lastname через пробел в html страницу.
     
  12. Compton

    Compton Member

    Joined:
    31 Jan 2010
    Messages:
    290
    Likes Received:
    25
    Reputations:
    0
    Вывод через пробел:
    PHP:
    echo($data['name'].' '.$data['lastname']);
    И лучше к входному параметру (в данном случае $_SESSION) перед обращением к бд применить функцию Trim()
     
    #22192 Compton, 23 May 2014
    Last edited: 23 May 2014
  13. Peklots

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

    Joined:
    28 Sep 2008
    Messages:
    281
    Likes Received:
    144
    Reputations:
    36
    Сделал так:
    PHP:
    $query_srting mysql_query("select * from users where login = '{$_SESSION['login']}' limit 1");

    $return_array mysql_fetch_array($query_srting);

    echo 
    $return_array['name'].','.$return_array['lastname'];
    Еще вопрос, правильна ли конструкция?
    PHP:
    if( isset($_POST["login"]) AND !empty($_POST["login"]) AND !($row checkPass($_POST["login"], md5($_POST["password"]))) )
    Ибо у меня всегда валид проверка получается.
     
  14. MegaByyte

    MegaByyte New Member

    Joined:
    27 Sep 2013
    Messages:
    10
    Likes Received:
    1
    Reputations:
    0
    Если checkPass возвращает false при неверных логин/пароль , то надо так:

    PHP:
    // !empty уже проверяет isset
    if( !empty($_POST["login"]) AND !empty($_POST["password"]) AND $row checkPass($_POST["login"], md5($_POST["password"])) ) {
        
    // correct
    } else {
        
    // incorrect
    }
     
  15. Peklots

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

    Joined:
    28 Sep 2008
    Messages:
    281
    Likes Received:
    144
    Reputations:
    36
    Да, возвращает false при неверных значениях.
    PHP:
    function checkPass($login$password) {
      global 
    $link;

      
    $query="SELECT login, password FROM users WHERE login='$login' and password='$password'";
      
    $result=mysql_query($query$link)
        or die(
    "checkPass fatal error: ".mysql_error());

      if(
    mysql_num_rows($result)==1) {
        
    $row=mysql_fetch_array($result);
        return 
    $row;
      }
      return 
    false;
    }
    В итоге твой варант не взлетел ) Тупо сразу true и переадресовывает на account )
     
  16. wkar

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

    Joined:
    18 Oct 2009
    Messages:
    211
    Likes Received:
    67
    Reputations:
    34
    Ravenous,
    а что ты с респонс делаешь? Где-то идет утечка памяти. Делай unset того что больше не используешь
     
  17. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Ну во первых тут скуль, во вторых уже сто раз говорили не используйте LIKE при сверке пароля. Сначала вытаскиваем логин и пасс. Проверяем существует ли логин и если логин существует уже проверяем подходит ли пасс.

    PHP:
    function checkPass($login$password) {
      global 
    $link;

      
    $query "SELECT `login`, `password` FROM `users` WHERE `login`= '" mysql_real_escape_string($login) . "'";
      
    $result mysql_query($query$link) or die("checkPass fatal error: ".mysql_error());

    $row mysql_fetch_array($result);

    if (isset(
    $row["password"], $row["login"]) && trim($row["password"]) != ''&& !is_null($row["password"] ))
    {
        if (
    $row["password"] == $password) return $row;
    }

      return 
    false;
    }
     
    #22197 cardons, 25 May 2014
    Last edited: 25 May 2014
  18. Peklots

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

    Joined:
    28 Sep 2008
    Messages:
    281
    Likes Received:
    144
    Reputations:
    36
    Не увидел, где в коде LIKE используется, но в итоге то, почему нельзя LIKE юзать? За скули да, в курсе, код не мой, поэтому сначала все разберу, потом все пофиксю )
    В итоге, поставил переписанную тобой функцию, но ошибка опять же вылазит.
     
  19. cardons

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

    Joined:
    19 Jul 2005
    Messages:
    778
    Likes Received:
    324
    Reputations:
    83
    Ссори тупанул про LIKE видать под вечер было. LIKE вообще старайтесь использовать как можно реже, а если используете то перед вводом данных в запрос проходите приходящие данные через регулярки которые не дадут вас поломать.

    Так же не понятно зачем вам $link? У вас же небось одна база...

    Проблем с моим кодом не должно быть, если есть проблемы значит ищите их до входа в функцию, либо у вас имя поля не верно или пароль равен NULL или пустой.

    Чтобы проверить что проблем с запросом нет сделайте просто в функции чуть ниже
    PHP:
    $query "SELECT `login`, `password` FROM `users` WHERE `login`= '" mysql_real_escape_string($login) . "'"
    Добавьте
    PHP:
    echo $query;
    Получите запрос который шлется в mysql и вбейте его к примеру в phpmyadmin если получите ошибку то значит проблема в запросе, если пустоту то значит проблема с заполнении полей либо в вводимых данных)

    P.S. не забывайте в запросе добавлять кавычки одинарные иначе если будут вводить два слова или больше вы получите ошибку.
     
    #22199 cardons, 26 May 2014
    Last edited: 27 May 2014
  20. GAiN

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

    Joined:
    2 Apr 2011
    Messages:
    2,550
    Likes Received:
    172
    Reputations:
    99
    как реализовать проверку, открыт ли сайт по https или по http?, как на ачате, если войти http://forum.antichat.ru
    выведет:
     
Thread Status:
Not open for further replies.