-4

警告: mysql_connect(): C:\xampp\htdocs\ramya\store.php のユーザー 'root'@'localhost' のアクセスが拒否されました (パスワードを使用: YES) 37 行目で localhost に接続できませんでした: ユーザー 'root のアクセスが拒否されました'@'localhost' (パスワードを使用: はい)

<?php

    error_reporting(E_ALL);
    $server = "localhost";
    $login = "root";
    $s_password = " ";

    $hotel_name=$_POST['hotel_name'];
    $street_name=$_POST['street_name'];
    $city=$_POST['city'];
    $state=$_POST['state'];
    $country=$_POST['country'];
    $zipcode=$_POST['zipcode'];
    $phone_number=$_POST['phone_number'];
    $fax=$_POST['fax'];
    $email_id=$_POST['email_id'];
    $pass=$_POST['password'];

    foreach ($_FILES["pictures"]["error"] as $key => $error) { //used for multiple uploads

        if ($error == UPLOAD_ERR_OK) {
            $tmp_name = $_FILES["pictures"]["tmp_name"][$key];
            }
    }

    $size = getimagesize($tmp_name);

    $width = $size[0]; // get width of the image
    $height = $size[1]; //get height of the image
    $type = $size[2]; //get type of the image
    $mime_type = $size['mime']; //get MIME of the image

    if(!$data = addslashes(@fread(@fopen($tmp_name, "r"), @filesize($tmp_name)))){
        die("\n<BR>Cannot read temp file: $tmp_file"); 
    } 

    $link = mysql_connect($server, $login, $s_password);
    if (!$link) {
        die("\n<BR>Could not connect $server:" .  mysql_error());
    }

    $db_selected = mysql_select_db("test");

    if (!$db_selected) {
        die ("\n<BR>Can\'t use Table : $db_selected" . mysql_error());
    }

    $query   = "INSERT INTO image_data ";
    $query  .= " (hotel_name,street_name,city,state,country,zipcode,phone_number,fax,email_id,password,image_type, image_width, image_height, image_data) ";
    $query  .= " values ";
    $query  .= " ('$hotel_name','$street_name','$city','$state','$country','$zipcode','$phone_number','$fax','$email_id','$pass','$mime_type', '$width', '$height', '$data') ";

    $result = mysql_query($query);

    if (!$result) {
        $message  = '<BR>Invalid query: ' . mysql_error() . "\n";
        die($message);
    }


    $image_id = mysql_insert_id() ;
    echo "\n<IMG SRC=\"getimage.php?id=$image_id\" />";

    mysql_close($link);

    exit();

?>
4

3 に答える 3

1

この特定のエラーは、コードとは関係ありません。そもそもMySQLにログインしていません。アカウントにアクセスできることを確認してください。

また、このスクリプト全体は非常に安全ではありません。準備済み/パラメーター化されたクエリを使用して、SQL インジェクション攻撃を回避します。現在データを処理している方法は、おそらくまったく機能しません。 addslashes()十分ではありません。

于 2013-07-04T05:08:25.410 に答える
0

エラーは、それが言うことを正確に意味します。PHP ファイルの問題ではありません。接続しようとしている MySQL サーバーに接続する権限が実際にはありません。

  1. MySQL サーバーは本当に localhost でホストされていますか?
  2. ユーザーとして接続しrootますか?
  3. 本当にパスワードとしてスペースを 1 つ使用するつもりですか?

そうは言っても、PHP ファイルにも多くの問題があります。最も明白なのは、単にmysql_*関数を使用していることです。これらはもはや保守されておらず、公式に非推奨であるため、新しいコードでは使用しないでください。(赤いボックスが見えますか?)

代わりにPDOまたはMySQLiを使用する必要があります。

2 番目の問題は、SQL インジェクションに対して非常に脆弱であることです。これは、クエリに含める各変数を呼び出すことで修正できますが、より良い解決策は、PDO または MySQLi に切り替えて、準備されたステートメントを調査することです。mysql_escape_string()

于 2013-07-04T05:08:51.740 に答える
0

パスワードにスペースがあることを確認してください。削除してみてください

$s_password = "";
于 2013-07-04T05:10:02.707 に答える