31
Temmuz
2009

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. :D )

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.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?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.

bu yazı 5.008 defa okundu

Site hoşunuza gitti mi? Belki arkadaşlarınızın da gider.

İstekli

Aaa Reklam

+ Yorumunuzu Ekleyin 1 yorum

  • Ali Barın 31 Temmuz 2009 23.25

    İşe yarar, güzel bir uygulama. Teşekkürler. :)

Yorumunuzu Bırakın

Bu yazıya gönderilen yeni yorumları e-posta aracılığıyla bana bildir
Yeni gönderilenleri yorum yapmadan takip etmek için tıklayınız.

Yorumunuz başarıyla alındı. Onaylandıktan sonra yayımlanacaktır. Teşekkürler.

Twitler yükleniyor... 5 saniye sonra

Bıdı bıdı bıdı bıdı dıdı dıdı dudu dudu hıdı hıdı hödü hödü yüklüyoruz öhüm öhüm bıdı bıdı vs vs... 6 nanosaniye önce

Yüklenmenin geç olmasının sebebi ben değilim, Twitter API'sinin yavaş olması. Gudu gudu hıdı hödö büdü büdü... 25697 asır önce

Ha tabi bunları okumuşsan, bu sitenin çok gizli bir özelliğini bulmuşsun demektir. ;) Tebrikler. Bu "sürpiz yumurta"yı bulduğunu bana da haber verir misin? Tıkla! 6 dinazor önce

Geçen Yıllarda Bu Hafta

2011

Bunun Burada Ne İşi Var?

Bunun Burada Ne İşi Var?

Dün şehre inmek için Sayın Menderes Türel’in zamanında Hafif Metro ...

Windows 7’de Bilgisayarınızın Aldığı Puanı Değiştirin

Windows 7’de Bilgisayarınızın Aldığı Puanı Değiştirin

Biliyorsunuz Microsoft, Windows Vista’dan bu yana bilgisayarlar için bir performans ...

Dördüncü Sınıfın Birinci Döneminden Öğrenci Görüşleri

Dördüncü Sınıfın Birinci Döneminden Öğrenci Görüşleri

Dördüncü sınıfın yarısı bitti. Okuldan mezun olmak üzereyim. İyisiyle kötüsüyle bir ...

UBenzer’den Alın!

UBenzer’den Alın!

Ablam evdeki kullanılmayanları ayırmış, “Umut bunları sat.” dedi. Hazır elime ...

2009

Kısık Işık

Kısık Işık

Tavana asılmış tek beyaz floresan lambayı sevemedim bir türlü… “Ben ...

Antalya Toplu Taşıma Sisteminin Sorunları - 1

Antalya Toplu Taşıma Sisteminin Sorunları - 1

Antalya’da ulaşım bir ölüm. Trafik sıkışıklığı, haftada bir yönü değişen ...

2008

14 Şubat

14 Şubat

Biliyorsun bugün 14 Şubat. Daha iki gün öncesinden hazırdı zaten ...

Uyumadan Önce Son Boşluk

Uyumadan Önce Son Boşluk

Uykuya dalmadan önce düşünürüm… Kötü alışkanlıklarımdan biridir. Aklıma ne gelirse ......

NES Emulatörleri

NES Emulatörleri

Daha önceki şu iki yazımda (1.si, 2.si), çocukken bolca oynadığımız ...

Son Yorumlar