Вывод в файл из mysql

Тема в разделе "Базы данных", создана пользователем primitive, 20 апр 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. primitive

    primitive Создатель

    Регистр.:
    7 май 2007
    Сообщения:
    43
    Симпатии:
    5
    Надо вывести инфу из таблицы в файл, не имея прав на работу с файлами. file_priv:N . как реализовать ,кто подскажет?
     
  2. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Что-то вроде, как устроиться работать таксистом, не имея водительских прав... Думаю, что никак.
     
  3. istifadeci

    istifadeci Читатель

    Заблокирован
    Регистр.:
    31 дек 2007
    Сообщения:
    14
    Симпатии:
    0
    HELP ME

    Ребята, у меня друг просил помошь о БД, а я не мог и вот обрашаюс k вам. Можна на етом скрипте исползоват база данных вместо "passwords.txt". Если можна, то как?

    *password.txt
    PHP:
    <?php
      session_start
    ();
      
    // put k faylu s parolyami
      
    $path 'passwords.txt';
      
    // adres stranichi, na kotoriy nujna peresilat posle avtorizchii
      
    $page 'http://serfeli.az';
       
      if(
    strtoupper($_SERVER['REQUEST_METHOD'])=='POST'){
       
    // esli vveli parol
         
    if(isset($_POST['password']) && ! empty($_POST['password'])){
             
    $passwords = array();
             
    $tmp_pass = array();
             
    $doLogin false;
         
    // chitaem paroli i kol-vo zaxodov v massiv
             
    $passwords file($path);
       
             foreach(
    $passwords as $k=>$v){
                 
    //  $tmp_pass = array(0 => parol, 1 => zaxodi)
                 
    $tmp_pass explode('|',$v);
                 
    $tmp_pass[1] = trim($tmp_pass[1]);
       
                 
    // proveryayem parol i skolko raz ego ispolzivali
                 
    if($tmp_pass[0] == $_POST['password'] && $tmp_pass[1]>0){
       
                     
    // esli vsyo v paryadke to umenshaem kolichestvo zaxodov na 1
                     
    $passwords[$k] = $tmp_pass[0].'|'.(--$tmp_pass[1]);
                     
    $doLogin true;
                     break;
                 }
             }
             if(
    $doLogin){
                 
    $_SESSION['auth']=true;
                 
    // obnavlyayem dannie v fayle
                 
    file_put_contents($path,implode("\r\n",$passwords));
                 
    // redidirektim stranichu na avtorizovannix
                 
    header('Location: '.$page);die;
             }
             
    $error 'Vash parol ne podxodit';
         }
         else{
             
    $error 'Vvedite parol';
         }
      }
      
    ?>
      <form method="post">
       <?=isset($error)?$error.'<br />':null?>
         Parol: <input name="password" type="password" /> <input type="submit" name="go" value="Vxod" />
      </form>
     
  4. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    Самый простой вариант. Должна существовать таблица table с полями password и exists_count.
    PHP:
    <?php
      session_start
    ();
       
      if(
    strtoupper($_SERVER['REQUEST_METHOD'])=='POST'){
       
    // esli vveli parol
       
    $PassEntered $_POST['password'];
       
       if(isset(
    $PassEntered) && ! empty($PassEntered)){

      
    $sql="SELECT * FROM table WHERE password = '".$PassEntered."'"
      
    $result=mysql_query($sql) or die("Ошибка запроса: " mysql_error());
      if(
    $row=mysql_fetch_array($result)){ 
         
    $sql="UPDATE table SET exists_count = exists_count + 1 WHERE password = '".$PassEntered."'"
         
    $result=mysql_query($sql) or die("Ошибка запроса: " mysql_error());

            
    $_SESSION['auth']=true;
            
    header('Location: '.$page);die;
        } 
       else{
             
    $error 'Vvedite parol';
         }

      }   
      }
      
    ?>
      <form method="post">
       <?=isset($error)?$error.'<br />':null?>
         Parol: <input name="password" type="password" /> <input type="submit" name="go" value="Vxod" />
      </form>
     
  5. istifadeci

    istifadeci Читатель

    Заблокирован
    Регистр.:
    31 дек 2007
    Сообщения:
    14
    Симпатии:
    0
    Ошыбка на базе

    Создал

    CREATE TABLE `table` (
    `password` VARCHAR( 4 ) NOT NULL ,
    `exists_count` VARCHAR( 1 ) NOT NULL
    );


    Потом добавил пароли

    INSERT INTO `table` ( `password` , `exists_count` )
    VALUES ('1234', '2'), ('4567', '2');


    После етого соединил базу

    $host="localhost";
    $username="baza";
    $password="baza";
    $db_name="baza";
    $tbl_name="table";
    mysql_connect("$host", "$username", "$password")or die("cannot connect");
    mysql_select_db("$db_name")or die("cannot select DB");


    ... и написал код который вы изменили

    Выдала такая ошибка

    Ошибка запроса: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'table WHERE password = '1234'' at line 1
     
  6. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    Ошибка в синтаксисе вот здесь
    HTML:
    $sql="SELECT * FROM table WHERE password = '".$PassEntered."'";
    попробйте вот так
    HTML:
    $sql="SELECT * FROM table WHERE password = '$PassEntered'";
    и я сомневаюсь что пароли хранятся просто как текстовый,он наверное закодирован в md5(pass) может даже 2-ое закодирование md5(md5(pass))
     
  7. istifadeci

    istifadeci Читатель

    Заблокирован
    Регистр.:
    31 дек 2007
    Сообщения:
    14
    Симпатии:
    0
    Пробовал, ничего не изменился ((

    А может столбцов меньше чем 10

    Еше не пробовал как работает код, но по моему тут юзер сможет одним паролом войти в сайт столько, сколько ему захочется. А мне надо столко, сколько я напишу в "exists_count"
     
  8. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    Сделай проверку
    if($row['exists_count']<'5'){
    продолжение кода}
     
  9. MadWizard

    MadWizard Постоялец

    Регистр.:
    24 мар 2009
    Сообщения:
    145
    Симпатии:
    20
    exists_count лучше сделать целочисленным.

    В запросе можно попробовать поставить кавычки

    Код:
    [COLOR=#000000][COLOR=#0000BB]<?php
      session_start[/COLOR][COLOR=#007700]();
       
      if([/COLOR][COLOR=#0000BB]strtoupper[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$_SERVER[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'REQUEST_METHOD'[/COLOR][COLOR=#007700]])==[/COLOR][COLOR=#DD0000]'POST'[/COLOR][COLOR=#007700]){
       [/COLOR][COLOR=#FF8000]// esli vveli parol
       [/COLOR][COLOR=#0000BB]$PassEntered [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#0000BB]$_POST[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'password'[/COLOR][COLOR=#007700]];
       
       if(isset([/COLOR][COLOR=#0000BB]$PassEntered[/COLOR][COLOR=#007700]) && ! empty([/COLOR][COLOR=#0000BB]$PassEntered[/COLOR][COLOR=#007700])){
    
      [/COLOR][COLOR=#0000BB]$sql[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"SELECT [/COLOR][/COLOR]`exists_count[COLOR=#000000][COLOR=#DD0000]` FROM `table` WHERE `password` = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$PassEntered[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]"'"[/COLOR][COLOR=#007700]; 
      [/COLOR][COLOR=#0000BB]$result[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]mysql_query[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$sql[/COLOR][COLOR=#007700]) or die([/COLOR][COLOR=#DD0000]"Ошибка запроса: " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]mysql_error[/COLOR][COLOR=#007700]());
      if([/COLOR][COLOR=#0000BB]$row[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]mysql_fetch_array[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$result[/COLOR][COLOR=#007700])){ 
         if [/COLOR][/COLOR][COLOR=#000000][COLOR=#DD0000]($row[[/COLOR][/COLOR]'exists_count'[COLOR=#000000][COLOR=#DD0000]][/COLOR][/COLOR]> 0) {
    [COLOR=#000000][COLOR=#007700]     [/COLOR][COLOR=#0000BB]$sql[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#DD0000]"UPDATE `table` SET `exists_count` = `exists_count` - 1 WHERE `password` = '"[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$PassEntered[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]"'"[/COLOR][COLOR=#007700]; 
         [/COLOR][COLOR=#0000BB]$result[/COLOR][COLOR=#007700]=[/COLOR][COLOR=#0000BB]mysql_query[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$sql[/COLOR][COLOR=#007700]) or die([/COLOR][COLOR=#DD0000]"Ошибка запроса: " [/COLOR][COLOR=#007700]. [/COLOR][COLOR=#0000BB]mysql_error[/COLOR][COLOR=#007700]());
    
            [/COLOR][COLOR=#0000BB]$_SESSION[/COLOR][COLOR=#007700][[/COLOR][COLOR=#DD0000]'auth'[/COLOR][COLOR=#007700]]=[/COLOR][COLOR=#0000BB]true[/COLOR][COLOR=#007700];
            [/COLOR][COLOR=#0000BB]header[/COLOR][COLOR=#007700]([/COLOR][COLOR=#DD0000]'Location: '[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000BB]$page[/COLOR][COLOR=#007700]);die;
        }
       } 
       else{
             [/COLOR][COLOR=#0000BB]$error [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#DD0000]'Vvedite parol'[/COLOR][COLOR=#007700];
         }
    
      }   
      }
      [/COLOR][COLOR=#0000BB]?>
    [/COLOR]  <form method="post">
       [COLOR=#0000BB]<?=[/COLOR][COLOR=#007700]isset([/COLOR][COLOR=#0000BB]$error[/COLOR][COLOR=#007700])?[/COLOR][COLOR=#0000BB]$error[/COLOR][COLOR=#007700].[/COLOR][COLOR=#DD0000]'<br />'[/COLOR][COLOR=#007700]:[/COLOR][COLOR=#0000BB]null?>
    [/COLOR]     Parol: <input name="password" type="password" /> <input type="submit" name="go" value="Vxod" />
      </form>[/COLOR]
    
     
    istifadeci нравится это.
  10. swer

    swer

    Регистр.:
    15 июн 2008
    Сообщения:
    305
    Симпатии:
    38
    Немного подправил код в целях улучшения.
    PHP:
    <?php
      session_start
    ();
       
      if(
    strtoupper($_SERVER['REQUEST_METHOD'])=='POST'){
       
    // esli vveli parol
       
    $PassEntered $_POST['password'];
       
       if(isset(
    $PassEntered) && ! empty($PassEntered)){

      
    $sql="SELECT `exists_count` FROM `table` WHERE `password` = '".$PassEntered."'"
      
    $result=mysql_query($sql) or die("Ошибка запроса: " mysql_error());
      if(
    $row=mysql_fetch_array($result)){ 
         if (
    $row['exists_count']< 5) {//где 5 это то количество раз которое дается юзверу.
    $sql="UPDATE `table` SET `exists_count` = `exists_count` + 1 WHERE `password` = '".$PassEntered."'"
         
    $result=mysql_query($sql) or die("Ошибка запроса: " mysql_error());

            
    $_SESSION['auth']=true;
            
    header('Location: '.$page);die;
        }else{
    $error="Вы исчерпали количество попыток";}
       } 
       else{
             
    $error 'Vvedite parol';
         }

      }   
      }
      
    ?>
      <form method="post">
       <?=isset($error)?$error.'<br />':null?>
         Parol: <input name="password" type="password" /> <input type="submit" name="go" value="Vxod" />
      </form>
     
    istifadeci нравится это.
Статус темы:
Закрыта.