Likes Likes:  0
Resultaten 1 tot 7 van de 7
Geen
  1. #1
    mysql tooltje in PHP?
    SWIS!
    948 Berichten
    Ingeschreven
    29/02/04

    Locatie
    Dordrecht / Leiden

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 280834450000
    Ondernemingsnummer: nvt

    Thread Starter

    mysql tooltje in PHP?

    Hallo,

    Ik probeer met PHP een tooltje te maken om gemakkelijk een sql file in een database te zetten. Ik zet dan met FTP het (grote) bestand in een mapje en run het onderstaande scriptje om het in te voegen.

    PHP Code:
    <?php

    error_reporting
    (E_ALL);
    mysql_connect('localhost', 'YYYYY', 'XXXXX')){
       

    if (
    $_SERVER['REQUEST_METHOD'] == 'POST'){
        if (isset(
    $_POST['username'], $_POST['password'], $_POST['database'], $_POST['filename'])){        
            if (
    $_POST['username'] == 'YYYYY' && $_POST['password'] == 'XXXXX' && $_POST['database'] != '' && $_POST['filename'] != ''){
                
    $command = "mysql -u " . $_POST['username'] . " -p " . $_POST['password'] . " -h localhost " . $_POST['database'] . " < `" . $_SERVER['DOCUMENT_ROOT'] . '/sql_runner/sql/' . $_POST['filename'] . "`";
                
    exec($command);
            } else {
                echo 
    'Lege waarde';    
            }
        } else {
            echo 
    '!isset';
        }
    }

    ?>


    <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
    <table>
        <tr>
        <td>Database</td><td><select name="database" style="width: 300px;">
        <option value=""> -- Selecteer een database -- </option>
        <?php
            
    if ($resultaat = mysql_query("SHOW DATABASES")){
                while (
    $record = mysql_fetch_assoc($resultaat)){
                    echo 
    '<option value="' . $record['Database'] . '">' . $record['Database'] . '</option>' . "\n";
                } 
             } else {
                die(
    mysql_error());
             }
        
    ?></select></td></tr>
        <tr><td>Bestand</td><td><select name="filename" style="width: 300px;">
            <option value=""> -- Selecteer een bestand -- </option>
            <?php
            
            
    if ($handle = opendir('sql')) {
               while (
    false !== ($file = readdir($handle))) { 
                   if (
    $file != '.' && $file != '..'){
                  echo 
    '<option value="' . $file . '">' . $file . '</option>' . "\n";
                  }
               }
           }
            
    ?>
        </select>
        </td></tr>
        <td>Gebruikersnaam</td><td><input type="text" name="username" style="width: 300px;" /></td>
        </tr>
        <tr>
        <td>Wachtwoord</td><td><input type="password" name="password" style="width: 300px;" /></td>
        </tr>
        <tr>
        <td>&nbsp;</td>
        <td><input type="submit" name="action" value="Verstuur" />
    </table>    
    </form>
    Als ik $command echo wordt dit op het scherm getoond:

    Code:
    mysql -u username -p password -h localhost vincent_test < `/home/swis/www/sql_runner/sql/allesduurzaam[1].sql`
    Iemand een idee waarom zoiets niet werkt?
    Bedankt.

  2. #2
    mysql tooltje in PHP?
    Meneer de Directeur
    12.253 Berichten
    Ingeschreven
    11/05/04

    Locatie
    Valkenswaard / Eindhoven

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    6 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 17186890

    Heeft de account waar je op zit wel rechten tot gebruik van commandline zaken?

  3. #3
    mysql tooltje in PHP?
    aktieve deelnemer
    2.782 Berichten
    Ingeschreven
    10/05/02

    Locatie
    Noordwest Holland

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: Ja
    KvK nummer: 37093085
    Ondernemingsnummer: nvt

    Het probleem is? AUB iets meer specificeren.

    Enkele gedachten:
    - Heb je rechten om het commando exec te gebruiken
    - Gebruik het volledige path naar MySQL

  4. #4
    mysql tooltje in PHP?
    SWIS!
    948 Berichten
    Ingeschreven
    29/02/04

    Locatie
    Dordrecht / Leiden

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 280834450000
    Ondernemingsnummer: nvt

    Thread Starter
    Rechten zijn er. Volledig path ga ik woensdag even proberen.

    Ik zie geen error of iets dergelijks.
    Bedankt voor de reacties

  5. #5
    mysql tooltje in PHP?
    geregistreerd gebruiker
    1.185 Berichten
    Ingeschreven
    26/08/04

    Locatie
    Groningen

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: nee
    KvK nummer: nvt
    Ondernemingsnummer: nvt

    Het commando moet zijn (wachtwoor aan de -p geplakt):

    Code:
    mysql -u username -ppassword -h localhost vincent_test < `/home/swis/www/sql_runner/sql/allesduurzaam[1].sql`
    Jochem

  6. #6
    mysql tooltje in PHP?
    geregistreerd gebruiker
    1.913 Berichten
    Ingeschreven
    23/10/03

    Locatie
    Enschede (+ London)

    Post Thanks / Like
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)
    33 Berichten zijn liked


    Naam: Max
    Registrar SIDN: ja
    KvK nummer: 08119406
    Ondernemingsnummer: -

    mysql -u username -p password -h localhost vincent_test < `/home/swis/www/sql_runner/sql/allesduurzaam[1].sql`
    - Het lijkt erop dat je backticks ( ` ) gebruikt i.p.v. single quote ( ' ). Backticks hebben een andere functie (execution operator).


    Verder is het aanroepen van exec() op deze manier een slechte gewoonte.
    exec() kan namenlijk meerdere commando's uitvoeren gescheiden door puntkomma's.
    Als het een tooltje is waar je alleen zelf bij kan is het niet zo'n ramp.
    Maar op het moment dat dat niet het geval is en een kwaadwillende gebruiker typt op het formulier als gebruikersnaam in: " ; rm -rf / ; " dan heb je een probleem.

    Gebruik daarom escapeshellarg():

    PHP Code:
    $command = "/path-naar-mysql/mysql -u " . escapeshellarg($_POST['username'])  .  " ". escapeshellarg("-p".$_POST['password']) . " -h localhost " .  escapeshellarg($_POST['database']) . " < ". escapeshellarg($_SERVER['DOCUMENT_ROOT']. '/sql_runner/sql/'.$_POST['filename']); 
    Dit zorgt er naast het escapen van gevaarlijke tekens ook meteen voor dat de argumenten tussen single quotes komen te staan.
    Laatst gewijzigd door maxnet; 25/04/05 om 20:51.

  7. #7
    mysql tooltje in PHP?
    SWIS!
    948 Berichten
    Ingeschreven
    29/02/04

    Locatie
    Dordrecht / Leiden

    Post Thanks / Like
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)
    0 Berichten zijn liked


    Registrar SIDN: ja
    KvK nummer: 280834450000
    Ondernemingsnummer: nvt

    Thread Starter
    Bedankt.
    De server is niet publiekelijk toegankelijk.

    Ik ga het even proberen.

Webhostingtalk.nl

Contact

  • Rokin 113-115
  • 1012 KP, Amsterdam
  • Nederland
  • Contact
© Copyright 2001-2026 Webhostingtalk.nl.
Web Statistics