2017-12-23 6 views
-1

私はPHPで新しく、画像付きの投稿を削除しようとしています。ストレージドライブ内の画像を削除する前に、画像パスをhttp://localhost/Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpegから/ Applications/XAMPP/xamppfiles/htdocsに/ Twitterの/ポスト/ 52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg」がstr_replaceを使用しているときに失敗しました

のthats私はIMAGEPATHを変更するstr_repalaceを使用する理由が、私はエラー

お知らせました:不定変数:path in /Applications/XAMPP/xamppfiles/htdocs/twitter/post.php on line 123

警告:()リンクを解除しない:

/Applications/XAMPP/xamppfiles/htdocs/twitter/post.phpにおけるそのようなファイルまたはディレクトリを

ライン126上{ "メッセージ": "正常に削除"、 「結果」:1は、「状態」:私はこのラインで未定義のパス変数を持っ

}「画像が てきましたが、ドライブから削除することに失敗した」

$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path); 

ここに何が間違っていたのですか?

if (!empty($_REQUEST["uuid"]) && empty($_REQUEST["id"])) { 


    $uuid = htmlentities(strtolower(stripcslashes($_REQUEST["uuid"]))); 
    $imagePath = htmlentities(($_REQUEST["imagePath"])); 


    $result = $access -> deletePost($uuid); 

    if (!empty($result)) { 

     $returnArray = [ 
     "message" => "successfully deleted", 
     "result" => $result 
    ]; 



    if (!empty($imagePath)) { 


     $path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path); 


     if (unlink($path)) { 
      $returnArray["status"] = "Image has been deleted from drive"; 
     } else { 
      $returnArray["status"] = "Image has been failed to be deleted from drive"; 
     } 



    } 


    } else { 

     $returnArray = [ 
     "message" => "Couldn't delete the post" 
    ]; 

    } 





} 
+0

$ pathがエラー状態として定義されていません。私はあなたが$ imagePathを意味すると思いますか? –

答えて

3

次の行:

$path = str_replace("http://localhost/", "/Applications/XAMPP/xamppfiles/htdocs/", $path); 

こと($imagePathため$pathを切り替える)すべき

$path = str_replace(
    "http://localhost/", 
    "/Applications/XAMPP/xamppfiles/htdocs/", 
    $imagePath 
); 

しかしhttp://localhost/を使用して/Applications/XAMPP/xamppfiles/htdocs/に置き換え、それが100%の移植性がありませんになり、それをコードをどこか別の場所に移動すると壊れてしまいます。

代わりにparse_urlを使用してパスを取得する必要があります。/Applications/XAMPP/xamppfiles/htdocs/はウェブルートのパスのように見えますので、忘れてください。

<?php 
$url = 'http://localhost/Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg'; 

$path = parse_url($url, PHP_URL_PATH); 

echo $path; //Twitter/Post/52/POST-1F3D1ABB-D525-4107-BE08-B5F8B7B5E29B.jpeg 

次に、unlink($path);を使用すると、正常に動作し、コードが移植可能になります。

関連する問題