Gönderen Konu: Php & MySQL  (Okunma sayısı 5072 defa)

Php & MySQL

« : 16.12.2007 23:30:03 »
Hızlı düğmeleri aç

fredi

İleti: 99

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
Umarım scene ile pek de ilgili olmayan bu soruyu bu forumda sorduğum için fazla ayar almam ama buradaki coderlar hem sağlam hem de web konusunda tecrübeliler :)
 
Birisine bir web sitesi yaptım, tüm çalışmam sırasında localhost'taydım. Site bitti dosyaları ftp ile adamın godaddy'den aldığı alana yükledim, godaddy'nin kendi phpMyAdmin'ini kullanıp database'i import ettim, kodlarımdaki configuration ayarlarını yeni database e göre değiştirdim ve siteye girmeyi denedim. Fakat günlerdir kafamı yememe neden olacak kadar garip bir sorun yaşamaktayım. Nedenini anlamadığım şekilde users ve site isimli tablolarda random olarak SELECT command denied to user hatası almaktayım. GRANT ile kendime bu hakkı vermeye çalıştım ama doğal olarak o da denied uyarısını verdi. Allah allah deyip, MySQL 4.1 kullanan bir database açtırdım ve orda denedim sonuç aynı. Tabloların isimlerini değiştirdim, copy denedim sonuç hala aynı. Godaddy'ye mail attım sorunun bana ait olduğunu ileri sürdüler. Database i ve siteyi kendi hostuma attım(godaddy o da, fakat bir sorun yaşamamıştım hiç) orada da aynı durumu yaşadım ve bu sayede sorunun harbiden bana ait olduğunu anladım.
 
abc.php diye bir dosya yarattım, user ve site tablolarından veri aldım uyarı muyarı vermeden çatır çatır aldı şerefsiz. Ama bu sadece kafamı daha da karıştırdı.
 
Son umudum burası, kutsal olan ne varsa onun adına yardım edin sıyırmak üzereyim. Gerekli her türlü kod parçalarını, bilgileri pastelemeye hazırım.

Php & MySQL

« Yanıtla #1 : 17.12.2007 00:31:40 »
Hızlı düğmeleri aç

vigo


  • Ziyaretçi
selam,
şimdi sen lokalinde hangi user ile bağlanıp çalışıyordun? muhtemelen root ile. backup'ına baktınmı? orada user bilgisi varmı?

yani sen, localde sorunsuz olarak "root" ile db'ye bağlanıp pek çok iş ( insert , select , delete vs ) rahat rahat yapıyorsun çünki sen root'sun.

ama server taradına, açılan o database'e hangi user ile bağlanıyorsun?

önerim, "debug" etmen için, o server'da hangi user varsa, lokalinde de aynen o user'dan aç, aynı password ile. aynı şekilde, hangi schema ile çalışıyorsan, o user'a gereken haları ver ( select , insert , delete , owner vs... ) sonra lokalindeki kodu dene... yani bir şekilde localinde simüle et server taradını. eğer ok ise, o user ile localindeki phpmyadmin'e bağlan ve backup al. sonra o backup'ı import et server'a...

bazen phpmyadmin versiyonlarında da sorun olabiliyor. en iyisi, server'da hangi vers. phpmyadmin varsa, lokale de aynısı kur...

çok uzunca bir zamandır mysql 5.0.24 ile çalışıyorum o bakımdan 4.1'de özel bişi varmıydı hatırlamadım. ama şunu söyliyebilirim, mesela untergrund.net'de kurulu olan mysql de eski. 4 küsür. localimde 5+ var. nightshift sitesini aktarırken ufak tefek elle modifiye yapıyorum phpmyadmin çıktısına... mesela DEFAULT CHARSET=utf8 yok untergrund da. çünki o db-server default olarak utf8. bu bakımdan backup'ı import ederken buna dikkat ediyorum. yani karşı tarafı iyice kontrol et...

Php & MySQL

« Yanıtla #2 : 17.12.2007 10:07:47 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
fredi, localinde çalıştığına göre kodu incelemeye çok da lüzum yok. ben de Vigo'ya katılıyorum. veritabanına bağlandığın user ile ilgilidir. bağlanmaya çalıştığın mysql user'ı gerçekten vardır, bu yüzden bağlantı hatası almıyorsundur. ancak user'ın yeterli yetkisi yoktur.
 
karıştıracağını zannetmiyorum ancak ufak bir uyarı yapayım. mysql üzerinde local ve remote userlar yaratabiliyorsun bildiğin üzere. mesela root@locahost ya da root@% olabiliyor. sen kendini her ne kadar remote hissetsen de GoDaddy'e göre PHP server-side çalıştığı için senin kodların local yetkiyle çalışacaktır. yani root@% yerine root@localhost yetkileri geçerli olacaktır. tabii buradaki root örnek. büyük olasılıkla domainname_extension@localhost gibi bir user olacaktır seninkisi.
 
abc.php dosyandaki mysql connection ile projendekini karşılaştır bakalım tutuyor mu birbirini.
 
son bir tavsiye. ben her defasına upload ettikten sonra connection dosyamı editlemekle uğraşmamak için local makinemdeki MySQL'in üzerinde remote'daki user&pass'in aynısını yaratırım. bu sayede olduğu gibi klasörü güncelleyebiliyorum gerektiğinde. "dbconn.php'yi güncellemeyi unutmuşum", "kahretsin yine üzerine yazdım dbconn.php'yi" gibi sorunlarla uğraşmıyorum böylece.

Php & MySQL

« Yanıtla #3 : 17.12.2007 21:14:51 »
Hızlı düğmeleri aç

fredi

İleti: 99

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
Öncelikle vakit ayırıp cevapladığınız için teşekkürler vigo ve skate :)
 
Gerçekten çok ilginç sorunlar yaşamaktayım. şimdi mysql sorununu bir kenara bıraktım kodların içinde hayalet arıyorum.
 
session_start();
include_once("API/Constants.php");
...
 
şeklinde başlayan dosya
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/content/f/e/l/felsongy/html/Template.php:1) in /home/content/f/e/l/felsongy/html/Template.php on line 2
 
hatası vermekte. "Neden" diye soracağım ama alacağım cevaplardan korkuyorum. :(
 
Neler olabileceği hakkında fikri olan var mı?

Php & MySQL

« Yanıtla #4 : 17.12.2007 21:33:57 »
Hızlı düğmeleri aç

fredi

İleti: 99

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
http://rapidshare.com/files/77251742/Database.php.html adresinden görebileceğiniz kendimce hazırladığım bir sınıfım var. Sitenin tamamında bunu kullanıyorum ve ihtiyaçlarımı karşılıyor. abc.php dosyasında da bu sınıfı kullanarak bağlantı yapıyorum, diğer sayfalarda da.
session_start();
include_once("API/Constants.php");
include_once("API/Database.php");
include_once("API/Tools/UserTools.php");
include_once("API/Tools/LoginTools.php");
$db = new Database(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
echo checkLogin($db);
echo "
";
?>

abc.php buna benziyor.
 
Sorunları gözlemleyebildiğim sayfalardan biri olan Template.php de böyle başlıyor
 
session_start();
include_once("API/Constants.php");
include_once("API/Database.php");
include_once("API/Tools/StringTools.php");
include_once("API/Tools/SiteTools.php");
include_once("API/Tools/ThemeTools.php");
include_once("API/Tools/LoginTools.php");
include_once("API/Tools/UserTools.php");
$db = new Database(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$theme = getThemeInfo($db, checkLogin($db));

Php & MySQL

« Yanıtla #5 : 17.12.2007 21:35:59 »
Hızlı düğmeleri aç

fredi

İleti: 99

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
http://rapidshare.com/files/77251742/Database.php.html adresinden görebileceğiniz kendimce hazırladığım bir sınıfım var. Sitenin tamamında bunu kullanıyorum ve ihtiyaçlarımı karşılıyor. abc.php dosyasında da bu sınıfı kullanarak bağlantı yapıyorum, diğer sayfalarda da.
session_start();
include_once("API/Constants.php");
include_once("API/Database.php");
include_once("API/Tools/UserTools.php");
include_once("API/Tools/LoginTools.php");
$db = new Database(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
echo checkLogin($db);
echo "
";
?>
 
abc.php buna benziyor.
 
Sorunları gözlemleyebildiğim sayfalardan biri olan Template.php de böyle başlıyor
 
session_start();
include_once("API/Constants.php");
include_once("API/Database.php");
include_once("API/Tools/StringTools.php");
include_once("API/Tools/SiteTools.php");
include_once("API/Tools/ThemeTools.php");
include_once("API/Tools/LoginTools.php");
include_once("API/Tools/UserTools.php");
$db = new Database(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_DATABASE);
$theme = getThemeInfo($db, checkLogin($db));
 
Sanırım bu kodlar asla kurtulmayacak. Aylardır bu proje üzerinde çalışıyordum ve şu an her şeyi silip baştan başlamayı düşünüyorum :(

Php & MySQL

« Yanıtla #6 : 18.12.2007 10:03:34 »
Hızlı düğmeleri aç

vigo


  • Ziyaretçi
session.save durumu ne?
server config'de bişi var... php.ini ile ilgili...

phpinfo(); yu görebileceğimiz bişi varmı?

Php & MySQL

« Yanıtla #7 : 18.12.2007 10:05:40 »
Hızlı düğmeleri aç

vigo


  • Ziyaretçi

Php & MySQL

« Yanıtla #8 : 18.12.2007 10:56:49 »
Hızlı düğmeleri aç

endo

İleti: 687

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.moldibi.com
bu session_start sorunu bi onceki sorundan kaynaklaniyor olabilir. cunku browser'a herhangi bir cikti gonderdikten sonra session_start yapamazsin, bi sekilde bir output gittiyse browser'a, ornegin hata mesaji, warning, notice gibi, o zaman session_start() da hata verecektir. aklinizda olsun..
- endo of glance -

Php & MySQL

« Yanıtla #9 : 18.12.2007 13:19:56 »
Hızlı düğmeleri aç

vigo


  • Ziyaretçi
ben fredi'nin session_start(); komutunu php sayfanın ilk satırına yazdığını düşünerek yorum yapıyorum hep... hangi sayfalarda session kullanıcaksa, o sayfanın ilk komutu olarak...

session_start();

:
:

diye yaptığını varsaymıştım default olarak

Php & MySQL

« Yanıtla #10 : 18.12.2007 16:38:30 »
Hızlı düğmeleri aç

skate

İleti: 5.245

A Sinner Scener
Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.akaydin.com/
Bir diğer çözüm (tavsiye etmiyorum ancak bilinmesinde fayda var) output bufferingi açmaktır.
Kod: [Seç]
<?php
[B]ob_start();[/B]
echo &
quot;abc&quot;;
session_start();
[
B]ob_end_flush();[/B]
?>
Burada echo komutu session_start'dan önce geldiği halde (normalde gelmemesi gerekir), output buffering açıldığı için sorun çıkmayacaktır.

Php & MySQL

« Yanıtla #11 : 18.12.2007 21:26:40 »
Hızlı düğmeleri aç

endo

İleti: 687

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.moldibi.com
Alıntı yapılan: vigo;16631
ben fredi'nin session_start(); komutunu php sayfanın ilk satırına yazdığını düşünerek yorum yapıyorum hep... hangi sayfalarda session kullanıcaksa, o sayfanın ilk komutu olarak...

session_start();

:
:

diye yaptığını varsaymıştım default olarak


yep, tabii ki vigo. ben dogrudan fredi'ye cevaben yazdim belki oyle bir durum soz konusudur diye..
- endo of glance -

Php & MySQL

« Yanıtla #12 : 19.12.2007 22:13:00 »
Hızlı düğmeleri aç

fredi

İleti: 99

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
phpinfo() için http://www.sinemasal.tv/phpinfo.php sayfasına bakabilirsiniz.
 
--
 
Aynen ben de saçma sapan bir space'in neden olduğunu düşünmüştüm ama tek bir karakter bile olmadığından eminim o sayfada session_start() tan önce.
Alıntı
session_start();

şeklinde başlıyor sayfa ki, aynı şekilde başlayan diğer sayfalarda bir sorun bulunmuyor. Sayfa üretildikten sonra kaynak koda baktım da ortada çok garip bir durum var. Buraya pasteleyemeceğim şeyler olduğundan şuraya ekran görüntüsü koydum: http://img504.imageshack.us/img504/9999/whattheqc7.png Artık bu sitede mantık aramadığımdan fazla sersemlemedim bu sefer :)
 
Alanımızın root klasöründe php.ini var. Sanırım bunu kullanıyor php bizim sayfaları işlerken diyerek paylaşıyorum:
Kod: [Seç]
register_globals = off
allow_url_fopen = off
expose_php = Off
max_input_time = 60
variables_order = &quot;EGPCS&quot;
extension_dir = ./
upload_tmp_dir = /tmp
precision = 12
SMTP = relay-hosting.secureserver.net
url_rewriter.tags = &quot;a=href,area=href,frame=src,input=src,form=,fieldset=&quot;
[Zend]
zend_extension=/usr/local/zo/ZendExtensionManager.so
zend_extension=/usr/local/zo/4_3/ZendOptimizer.so
allow_call_time_pass_reference = true

Ne zaman cevap yazabilirim bilmiyorum, zira evdeki internetim kesildi. Tam deadline esnasında pek hoş olmadı tabii bu.
 
P.S. Bu php.ini'de newline karakterlerini okuyamıyor Windows Notepad. Hosting Linux olduğundan kaynaklanıyor olabilir mi acaba? Önemli değil ama merak ettim.
 
Bir de serverdaki durumu aynen evde simüle etme fikri kafama yattı. MySQL sürümü olarak serverda 5.0.18 var evdeki de 5.0.45 olması lazım. [Net kafedeyim de şu an] O kadar fark var mı ki acaba iki sürüm arasında .\

Php & MySQL

« Yanıtla #13 : 19.12.2007 22:12:59 »
Hızlı düğmeleri aç

fredi

İleti: 99

Çevrimdışı
  • **
  • Jr. Member
    • Profili Görüntüle
phpinfo() için http://www.sinemasal.tv/phpinfo.php sayfasına bakabilirsiniz.
 
--
 
Aynen ben de saçma sapan bir space'in neden olduğunu düşünmüştüm ama tek bir karakter bile olmadığından eminim o sayfada session_start() tan önce.
Alıntı
session_start();

şeklinde başlıyor sayfa ki, aynı şekilde başlayan diğer sayfalarda bir sorun bulunmuyor. Sayfa üretildikten sonra kaynak koda baktım da ortada çok garip bir durum var. Buraya pasteleyemeceğim şeyler olduğundan şuraya ekran görüntüsü koydum: http://img504.imageshack.us/img504/9999/whattheqc7.png Artık bu sitede mantık aramadığımdan fazla sersemlemedim bu sefer :)
 
Alanımızın root klasöründe php.ini var. Sanırım bunu kullanıyor php bizim sayfaları işlerken diyerek paylaşıyorum:
Kod: [Seç]
register_globals = off
allow_url_fopen = off
expose_php = Off
max_input_time = 60
variables_order = &quot;EGPCS&quot;
extension_dir = ./
upload_tmp_dir = /tmp
precision = 12
SMTP = relay-hosting.secureserver.net
url_rewriter.tags = &quot;a=href,area=href,frame=src,input=src,form=,fieldset=&quot;
[Zend]
zend_extension=/usr/local/zo/ZendExtensionManager.so
zend_extension=/usr/local/zo/4_3/ZendOptimizer.so
allow_call_time_pass_reference = true

Ne zaman cevap yazabilirim bilmiyorum, zira evdeki internetim kesildi. Tam deadline esnasında pek hoş olmadı tabii bu.
 
P.S. Bu php.ini'de newline karakterlerini okuyamıyor Windows Notepad. Hosting Linux olduğundan kaynaklanıyor olabilir mi acaba? Önemli değil ama merak ettim.
 
Bir de serverdaki durumu aynen evde simüle etme fikri kafama yattı. MySQL sürümü olarak serverda 5.0.18 var evdeki de 5.0.45 olması lazım. [Net kafedeyim de şu an] O kadar fark var mı ki acaba iki sürüm arasında .\

Php & MySQL

« Yanıtla #14 : 20.12.2007 15:05:12 »
Hızlı düğmeleri aç

endo

İleti: 687

Çevrimdışı
  • Administrator
  • *****
  • Hero Member
    • Profili Görüntüle
    • http://www.moldibi.com
daha cok php versiyonu ile ilgili olabilir gibi gorunuyor, cunku farkli php versiyonlarinda gercekten garip farklar olabiliyor. once oradan baslayabilirsin, olmadi o zaman mysql versiyonunu hatta web server versiyonunu da hosting'deki ile ayni yapabilirsin evde.
- endo of glance -