Изменить пароль объектов входа в MSSMS2012 с помощью PDO

try{
@$name = $_GET['name'];
$password = $RandomPassword;
$stmt = $conn->prepare("ALTER LOGIN '$name' WITH PASSWORD =N'$password'");
$stmt->execute();
}catch(PDOException $e){
die ("Error Executing Query: ".$e->getMessage());
}

Вот где я выбираю из основной базы данных

<?php
$stmt = $conn->query('SELECT * FROM master.sys.server_principals');
while ($rows = $stmt->fetch()) {
echo '
<tr>
<td>'.($rows['name']).'</td>
<td><a href="reset_password.php?ResetID=?'.$rows['name'].'" class="btn btn-dark" >Reset</a></td>
</tr>';

?>
В соединении нет ошибок, а перехват не возвращает ошибок.
Пароль не меняется, пожалуйста, помогите

0

Решение

Я точно отвечу на ваш вопрос — вам нужно внести следующие исправления:

Сначала удалите дополнительные ? после ?ResetID= и изменить:

<a href="reset_password.php?ResetID=?'.$rows['name'].'" class="btn btn-dark" >Reset</a>

в

<a href="reset_password.php?ResetID='.$rows['name'].'" class="btn btn-dark" >Reset</a>

Во-вторых, в вашем reset_password.phpнужно прочитать $_GET['ResetID'] и установите значение переменной $ name следующим образом:

$name = $_GET['ResetID'];

Как примечание, sys.sql_logins представление системного каталога предоставляет информацию только для входов в систему аутентификации SQL Server. Для обоих представлений читайте о разрешениях и видимости.

Обновить:

Это работает для меня, если имя входа, которое я использую для подключения к SQL Server, имеет разрешения:

form.php

<?php
# Connection
$server    = 'server\instance,port';
$database  = 'master';
$uid       = 'uid';
$pwd       = 'pwd';

# PDO Connection
try {
# SQL authentication
$conn = new PDO("sqlsrv:server=$server;Database=$database", $uid, $pwd);
# Windows authentication
#$conn = new PDO("sqlsrv:server=$server;Database=$database");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch( PDOException $e ) {
die( "Error connecting to SQL Server".$e->getMessage());
}

#
try {
$stmt = $conn->query("SELECT * FROM master.sys.sql_logins");
# Data
while ($row = $stmt->fetch(PDO::FETCH_ASSOC) ){
echo '
<tr>
<td>'.($row['name']).'</td>
<td><a href="form-submit.php?ResetID='.$row['name'].'" class="btn btn-dark" >Reset</a></td>
</tr>';
}
} catch( PDOException $e ) {
die( "Error executing query".$e->getMessage() );
}
$stmt = null;
exit;

# End
$conn = null;
?>

Форма-submit.php

<?php
# Connection
$server    = 'server\instance,port';
$database  = 'master';
$uid       = 'uid';
$pwd       = 'pwd';

# PDO Connection
try {
# SQL authentication
$conn = new PDO("sqlsrv:server=$server;Database=$database", $uid, $pwd);
# Windows authentication
#$conn = new PDO("sqlsrv:server=$server;Database=$database");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch( PDOException $e ) {
die( "Error connecting to SQL Server".$e->getMessage());
}

# Change password
try {
$loginName     = $_GET['ResetID'];
$loginPassword = "123abc";
echo "ALTER LOGIN $loginName WITH PASSWORD = N'$loginPassword'";
$stmt = $conn->query("ALTER LOGIN $loginName WITH PASSWORD = N'$loginPassword'");
} catch( PDOException $e ) {
die( "Error executing query".$e->getMessage() );
}
$stmt = null;

# End
$conn = null;
?>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]