logo mysql
💻 Bilgisayar, 💾 Programlama

PHP MYSQL Prefix Değiştirici

logo-mysqlWorpress, Drupal, phpBB, Simple Machines gibi hazır sistemlerle uğraşanlar bilirler. Diğer sistemlerle beraber sorunsuz çalışmasını sağlamak için veritabanı tablolarında ön ek (prefix) denilen bir uygulama kullanılır.

Bazen bu eki, güvenlik açısından (ya da can sıkıntısından) değiştirmeniz gerekebilir. Aşağıda böyle durumlarda kullanabileceğiniz bir script (betik) sunuyorum.

Kendim bu scripti kullandığımda tablo adlarını değiştirmekte hiçbir sorun yaşamadım. ANCAK WORDPRESS’TE SADECE ÖN EKLERİ DEĞİŞTİRMENİZ TEK BAŞINA YETERLİ OLMUYOR! _options ve _usermeta tablolarında da bazı değişiklikler yapmanız gerekiyor. Onun için eğer bu konularda bilgili değilseniz bu işlemi uygulamamanızı öneriyorum.

Değişiklik yapmadan önce veritabanınızın yedeğini mutkala alınız. (Mazallah, şeytan doldurur. 😀 )

Kaynak kodu bana ait değil. Yazarın sitesine buradan ulaşabilir, kodu buradan indirebilir ya da yazının devamındakini kopyala yapıştır yapabilirsiniz.

<?php /*
    MySQL Table Prefix Changer
    By Robert Dunham
    http://www.nilpo.com   

    This script can be used to change all of the table prefixes
    in a database.  This can be useful as a security precaution
    when using preset table names like with phpBB.  This can help
    prevent sql injections.

    Additional information at
    http://www.nilpo.com

   Download link: http://www.nilpo.com/pub/examples/prefix.php
*/?>

<html>
<head>
<title>MySQL Table Prefix Changer</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<?php
// Check for POST data
$action = isset($_REQUEST['action'])?$_REQUEST['action']:false;

if (!$action) {
?>
<form name="form1" method="post">
	<table width="75%" border="0" cellspacing="2" cellpadding="2">
		<tr>
			<td>Enter database name:</td>
			<td><input name="d" type="text" id="d" size="50"></td>
		</tr>
		<tr>
			<td>Enter database user</td>
			<td><input name="u" type="text" id="u" size="50"</td>
		</tr>
		<tr>
			<td>Enter database password:</td>
			<td><input name="p" type="password" id="p" size="50"></td>
		</tr>
		<tr>
			<td>Enter New Prefix:</td>
			<td><input name="n" type="text" id="n" size="50" value="(Do not include the trailing underscore)"></td>
		</tr>
		<tr>
			<td>&nbsp;</td>
			<td>&nbsp;</td>
		</tr>
		<tr>
			<td colspan="2" align="center"><input name="action" type="hidden" id="action" value="data">
				<input type="submit" name="Submit" value="Change Table Prefixes"></td>
		</tr>
	</table>
</form>
<?php
} else {

$mysql_db = $_REQUEST['d'];
$mysql_user = $_REQUEST['u'];
$mysql_pass = $_REQUEST['p'];
$table_prefix = $_REQUEST['n'];


// Open MySQL link
$link = mysql_connect('localhost', $mysql_user, $mysql_pass);
if (!$link) {
    die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully<br><br>';


// Select database and grab table list
mysql_select_db($mysql_db, $link) or die ("Database not found.");
$tables = mysql_list_tables($mysql_db);


// Pull table names into an array and replace prefixes
$i = 0;
while ($i < mysql_num_rows($tables)) {
	$table_name = mysql_tablename($tables, $i);
	$table_array[$i] = $table_name;
	$i++;
}


// Pull table names into another array after replacing prefixes
foreach ($table_array as $key => $value) {
	$table_names[$key] = replace_prefix($value, $table_prefix);
}


// Write new table names back
foreach ($table_array as $key => $value) {
	$query = sprintf('RENAME TABLE %s TO %s', $table_array[$key], $table_names[$key]);
	$result = mysql_query($query, $link);
	if (!$result) {
		$error = mysql_error();
		echo "Could not $query : $error<br>";
	} else {
		$message = sprintf('Successfully renamed %s to %s in %s', $table_array[$key], $table_names[$key], $mysql_db);
		echo "$message<br>";
	}
}


// Free the resources
mysql_close($link);
}

function replace_prefix($s, $prefix) {
	$pos = strpos($s, "_");
	$s = substr($s, $pos + 1);
	$s = sprintf("%s_%s", $prefix, $s);
	return $s;
}
?>

Dipnot: Prefixi değiştirdikten sonra Leyla’lık yapıp, yazılımızın ayar dosyalarını (config) yeni ön eke göre (prefix) ayarlamayı unutmayın. =)

İyi akşamlar.

👋 🚨 Yeni yazılardan haberdar olmak ister misiniz? 👇

PHP MYSQL Prefix Değiştirici bir yorum aldı.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir