2017-01-18 8 views
1

まず最初に、私は技術的な人ではなく、私が使っているスクリプトは、私がオンラインで見つけたスクリプトだと言いたいと思います。 私が見つけたスクリプトでは、私がしたいことをするまで、私はそれらと遊んでいません。サーバーへのファイルアップロードPHP

私は私の質問の答えに優しさを願っています。

私はユーザーに詳細を書き留めて、ファイルに添付してデータベースに送信したいという登録フォームを作成しました。

私はこの時点で私のデータベースにうまく収まるようにフォームを微調整することができました。

しかし、これは私の質問です。ユーザーが添付したファイルをWebサーバーに保存したいので、検索を実行するとそのファイルを表示できます。

ここに私のファイルがあります。誰かが私が間違っていることを助けてくれることを願っています。

のindex.php

<?PHP 
require_once("./include/membersite_config.php"); 

if(isset($_POST['submitted'])) 
{ 
    if($fgmembersite->RegisterUser()) 
    { 
     $fgmembersite->RedirectToURL("thank-you.html"); 
    } 
} 
?> 

<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta name="HandheldFriendly" content="True"><meta name="MobileOptimized" content="320"><meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0" templatewidth="940"> 
<link href="//fonts.googleapis.com/css?family=Arimo%3A100%2C100italic%2C200%2C200italic%2C300%2C300italic%2C500%2C500italic%2C600%2C600italic%2C700%2C700italic%2C800%2C800italic%2C900%2C900italic%2Citalic%2Cregular&amp;subset=all" rel="stylesheet" type="text/css"> 

<link rel="stylesheet" href="//ajrecruit.be/onewebstatic/e252b917fa.css"> 
<script type='text/javascript' src='scripts/gen_validatorv31.js'></script> 
<link rel="STYLESHEET" type="text/css" href="style/pwdwidget.css" /> 
<script src="scripts/pwdwidget.js" type="text/javascript"></script> 
</head> 
<body> 
<div class="row" style="min-height:586px;width:940px;margin:auto;"> 
<div class="extra" style="margin:86px 320px 0px 220px;"> 
<div class="component block idDD64D2318FF04CF59133D806E6A0D267" style="width:400px;"> 
<div class="self mobile-leaf contactFormContainer" style="width:400px;min-height:500px;" onclick="if(event.target === this) {event.stopPropagation();}"> 
<div id='fg_membersite'> 



<form id='register' action='<?php echo $fgmembersite->GetSelfScript(); ?>' method='post' accept-charset='UTF-8'> 

<input type='hidden' name='submitted' id='submitted' value='1'/> 

<div><span class='error'><?php echo $fgmembersite->GetErrorMessage(); ?></span></div> 

    <div class='container'> 
    <label for='voornaam' >Voornaam*: </label><br/> 
    <input type='text' name='voornaam' /> 
    </div> 
    <div class='container'> 
    <label for='familienaam' >Familienaam*: </label><br/> 
    <input type='text' name='familienaam' /> 
    </div> 
    <div class='container'> 
    <label for='adres' >Adres*: </label><br/> 
    <input type='text' name='adres' /> 
    </div> 
    <div class='container'> 
    <label for='postcode' >Postcode*: </label><br/> 
    <input type='text' name='postcode' /> 
    </div> 
    <div class='container'> 
    <label for='gemeente' >Gemeente*: </label><br/> 
    <input type='text' name='gemeente' /> 
    </div> 
    <div class='container'> 
    <label for='email' >Email*: </label><br/> 
    <input type='text' name='email' /> 
    </div> 
    <div class='container'> 
    <label for='tele' >Telefoon*: </label><br/> 
    <input type='text' name='tele' /> 
    </div> 
    <div class='container'> 
    <label for='username' >Username*: </label><br/> 
    <input type='text' name='username' /> 
    </div> 
    <div class='container'> 
    <label for='password' >Wachtwoord*: </label><br/> 
    <div class='pwdwidgetdiv' id='thepwddiv' ></div> 
    <noscript> 
    <input type='password' name='password' /> 
    </noscript> 
    </div> 
    <input type="file" name="file" /> 
    <button type="submit" name="btn-upload">upload</button> 
    </form> 
    <br /><br /> 

<script type='text/javascript'> 
// <![CDATA[ 
    var pwdwidget = new PasswordWidget('thepwddiv','password'); 
    pwdwidget.MakePWDWidget(); 
// ]]> 
</script> 

</div> 
</body> 
</html> 

fg_membersite.php私はそれが非常に長いスクリプトです知っているが、私は郵送登録確認のように、他のものの束を行います。 添付ファイルをサーバーフォルダ「uploads」にアップロードする機能を作成しようとしましたが、取得できないようです。

収集機能

function CollectRegistrationSubmission(&$formvars) 
    { 
     $formvars['voornaam'] = $this->Sanitize($_POST['voornaam']); 
     $formvars['familienaam'] = $this->Sanitize($_POST['familienaam']); 
     $formvars['adres'] = $this->Sanitize($_POST['adres']); 
     $formvars['postcode'] = $this->Sanitize($_POST['postcode']); 
     $formvars['gemeente'] = $this->Sanitize($_POST['gemeente']); 
     $formvars['email'] = $this->Sanitize($_POST['email']); 
     $formvars['tele'] = $this->Sanitize($_POST['tele']); 
     $formvars['file'] = $this->Sanitize($_POST['file']); 
     $formvars['username'] = $this->Sanitize($_POST['username']); 
     $formvars['password'] = $this->Sanitize($_POST['password']); 

}

>

function InsertIntoDB(&$formvars) 
    { 

     $confirmcode = $this->MakeConfirmationMd5($formvars['email']); 

     $formvars['confirmcode'] = $confirmcode; 

     $insert_query = 'insert into '.$this->tablename.'(
       voornaam, 
       familienaam, 
       adres, 
       postcode, 
       gemeente, 
       email, 
       tele, 
       file, 
       username, 
       password, 
       confirmcode 
       ) 
       values 
       (
       "' . $this->SanitizeForSQL($formvars['voornaam']) . '", 
       "' . $this->SanitizeForSQL($formvars['familienaam']) . '", 
       "' . $this->SanitizeForSQL($formvars['adres']) . '", 
       "' . $this->SanitizeForSQL($formvars['postcode']) . '", 
       "' . $this->SanitizeForSQL($formvars['gemeente']) . '", 
       "' . $this->SanitizeForSQL($formvars['email']) . '", 
       "' . $this->SanitizeForSQL($formvars['tele']) . '", 
       "' . $this->SanitizeForSQL($formvars['file']) . '", 
       "' . $this->SanitizeForSQL($formvars['username']) . '", 
       "' . md5($formvars['password']) . '", 
       "' . $confirmcode . '" 
       )';  
     if(!mysql_query($insert_query ,$this->connection)) 
     { 
      $this->HandleDBError("Error inserting data to the table\nquery:$insert_query"); 
      return false; 
     }   
     return true; 
    } 

だから、誰もが、私は得るためにそれを行うために必要な方法を教えて喜んでいる場合は、データベース関数に挿入します添付ファイルを私のフォルダ 'uploads'にアップロードする関数です。これはmucですhは訴えました。

+1

あなたは**に挿入した後

$_FILES['file']['name']; //contain name of file $_FILES['file']['type'];//contain type (mime type) of file $_FILES['file']['tmp_name'];//contain temporary path of file $_FILES['file']['size'];//contain sizeof file 

あなたに有用である可能性がある他のファイルの配列があります。 ** php5.5(3年以上前)以来廃止され、セキュリティ上の問題のためにPHP7以降に削除された 'mysql_xxx'関数を使用してはいけません(http://stackoverflow.com/q/12859942/3992945参照)。 php.net/manual/en/mysqlinfo.api.choosing.phpの代わりに 'mysqli_xxx'か' PDO'を使用してください。また、php 5.5以降には、md5よりも優れたパスワードをハッシュする組み込み関数があります。 http://php.net/manual/fr/function.password-hash.php –

+0

こんにちはCrozetを参照してください、私はmysql_xxxをmysqli_xxxに変更する必要がありますか? – WouterS

+1

短い答え:はい、長い答え:見て[ここ](http://stackoverflow.com/questions/4598854/how-do-i-migrate-my-site-from-mysql-to-mysqli)と[ここでは、(http://stackoverflow.com/questions/1390607/how-could-i-change-this-mysql-to-mysqli)より多くの情報:いくつかの関数の名前にいくつかの違いがありますが、基本的な使い方については、問題がないはずです –

答えて

3

すべての最初のフォームに属性のenctype = "multipart/form-data" を追加

代わりの

$formvars['file'] = $this->Sanitize($_POST['file']); 

使用

$formvars['file'] = $this->Sanitize($_FILES['file']['name']); 

データベースに格納されるファイル名を取得するために

成功して、データベース

ディレクトリにコピーファイル(カスタムでもよい)

move_uploaded_file($_FILES['file']['tmp_name'],"MY_PATH/".$_FILES['file']['name']); 
+0

こんにちはVishnu、私は 'move_uploaded_file($ _ FILES ['ファイル '] [' tmp_name ']、 "MY_PATH /"。$ _ FILES ['ファイル '] ['名前 ']);'部? mysqlクエリ – WouterS

+1

が動作します!スーパーと非常に非常にありがとう –

+1

の実行後に – WouterS

1

フォームにenctype="multipart/form-data"という属性を追加する必要があります。ユーザーがフォームを送信すると、ファイルはサーバー上のtmpファイルにアップロードされます。ファイルを移動するには、move_uploaded_file()を使用します。これが役立つことを願って

p.s.ドキュメント:その後、http://php.net/manual/en/features.file-upload.post-method.php

関連する問題