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>';
?>
В соединении нет ошибок, а перехват не возвращает ошибок.
Пароль не меняется, пожалуйста, помогите
Я точно отвечу на ваш вопрос — вам нужно внести следующие исправления:
Сначала удалите дополнительные ?
после ?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;
?>
Других решений пока нет …