سؤال

بحسب ال وثائق شركة تنمية نفط عمان, ، يمكنك تخزين تفاصيل تسجيل الدخول إلى قاعدة البيانات في php.ini، بعيدًا عن ملف php (المثال 3).ولكنه لا يشرح كيفية تخزين اسم المستخدم وكلمة المرور، فقط قاعدة البيانات والمضيف.كيف يمكنك أن تفعل ذلك؟

هذه هي الطريقة المستخدمة في التوثيق:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"

لقد حاولت إضافة اسم المستخدم وكلمة المرور إلى المضيف، ولكن لم يعجبه:بين اسم المستخدم وكلمة المرور، ولا يتعرف على عنوان يحتوي على اسم مستخدم فقط كعنوان حقيقي:

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=username:password@localhost"

لقد حاولت أيضًا وضع اسم المستخدم وكلمة المرور كوسيطتين منفصلتين، لكن الأمر لم يحدث

[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;username:username;password:secret"
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;uid:username;pwd:secret"
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost;UID:username;PWD:secret"
هل كانت مفيدة؟

المحلول

وفقا للوثائق، هذا غير ممكن.وربما لا يريد.إذا نظرت إلى PDO __construct() الطريقة، فإنه يأخذ 3 الحجج:DSN (والذي يمكن أن يكون اسمًا لـ pdo.dsn.name المحددة في php.ini الخاص بك)، واسم المستخدم وكلمة المرور.

نصائح أخرى

يمكنك تخزين اسم المستخدم وكلمة المرور لقاعدة البيانات في متغير بيئة، والذي يتوفر بعد ذلك داخل البرنامج النصي PHP في ملف $_ENV superglobal.

AFIACT، لا يمكنك تعيين متغير بيئة من php.ini، ولكن يمكنك تعيينه في تكوين Apache، بما في ذلك ملف htaccess.على سبيل المثال

SetEnv mysql_username dbuser
SetEnv mysql_password dbpass

ثم في PHP الخاص بك يمكنك استخدام:

$db = new PDO('mydb',$_ENV['mysql_username'],$_ENV['mysql_password']);

يمكنك أيضًا وضع DSN كمتغير بيئة للاحتفاظ به معًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top