lostyazilim

Php Ereg Hatası-YARDIM [ÇÖZÜLDÜ]

8 Mesajlar 1.006 Okunma
lstbozum
wmaraci reklam

emreyavuz emreyavuz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 05.11.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Erzurum
  • Ad Soyad E** Y**
  • Mesajlar 132
  • Beğeniler 49 / 9
  • Ticaret 0, (%0)
Merhaba arkadaşlar php sürümü 5.3 olan hostta üye olurken şu hatayı alıyorum...

Function eregi() is deprecated..araştırdığım kadarıyla ereg yerine preg match kullanmam gerekiyormuş.



Üyeol sayfasının değiştirilmemiş kodları;






function yeniuyelik(){ //yeniuyelik function başla
?>

















































































      
Yeni Üye Kaydı
 
 
Adınız ve Soyadınız
 

 *
 
Kullanıcı Adınız
 
 *
 
Parolanız
 

 *
 
Parola Tekrarlayınız
 

 *
 
E-Mail Adresiniz
 
 
*
 
Şehir Seçiniz
 

 *
 
Avatar Yüleyiniz
 
       
     

 



Ana Sayfa






#-------------------------------------------------------------------

include ("db_baglan.php");
function uyekayit(){ //uyekayit function başla

$adsoyad = $_POST['adsoyad'];
$kullaniciadi = $_POST['kullaniciadi'];
$parola = $_POST['parola'];
$sifre = $_POST['sifre'];
$email = $_POST['email'];
$sehir = $_POST['sehir'];
$onay = 1;
$tarih = date("d.m.Y");
$ip = getenv("REMOTE_ADDR");

if($adsoyad=="" || $kullaniciadi=="" || $parola=="" || $sifre=="" || $email=="" || $sehir==""){
echo "

Yıldızlı Alanları Boş Bırakamazsınız!


Parolalarınız Birbirini Tutmuyor!


Lütfen Geçerli Bir E-Mail Adresini Yazınız (mailadi@mail.com)!


$kontrol = mysql_query($bak);
$kayitsayisi = mysql_num_rows($kontrol);

if ($kayitsayisi > 0) {
echo "

Yazdığınız Kullanıcıadı veya E-Mail Adresi Kullanılıyor!


$filename=$_FILES["$posted"]['name'];
$efilename = explode('.', $filename);
$uzanti = $efilename[count($efilename) - 1];
$uzantilar=array('jpg','png','gif');
$isim=rand(0,99999999);
$yeniad = "".$isim.".".$uzanti."";
$hedef1 = "uye_avatarlar/".$yeniad;
move_uploaded_file($_FILES["$posted"]['tmp_name'],"uye_avatarlar/".$yeniad);
}

$uyekayit = mysql_query("INSERT INTO uyeler (kulladi,parola,sifre,email,sehir,adsoyad,tarih,resim,onay,ip) values ('$kullaniciadi','$parolamd','$sifre','$email','$sehir','$adsoyad','$tarih','$hedef1','$onay','$ip')");

if ($uyekayit){
echo "

Teşekkürler! Üye Kaydınız Yapıldı!

Girişi Yapmak İçin BURAYA Tıklayınız!

";
}else{
echo "

Üzgünüm Üye Kaydınız Yapılamadı!


default:
yeniuyelik();
break;
case "uyekayit";
uyekayit();
break;
}
?>






Değiştirilmiş kodda ise hata almıyorum fakat doğru işlemler yapamam rağmen üyeliğiniz oluşturulamadı diyor kod gereği..


değiştirilmiş hali






function yeniuyelik(){ //yeniuyelik function başla
?>

















































































      
Yeni Üye Kaydı
 
 
Adınız ve Soyadınız
 

 *
 
Kullanıcı Adınız
 
 *
 
Parolanız
 

 *
 
Parola Tekrarlayınız
 

 *
 
E-Mail Adresiniz
 
 
*
 
Şehir Seçiniz
 

 *
 
Avatar Yüleyiniz
 
       
     

 



Ana Sayfa






#-------------------------------------------------------------------

include ("db_baglan.php");
function uyekayit(){ //uyekayit function başla

$adsoyad = $_POST['adsoyad'];
$kullaniciadi = $_POST['kullaniciadi'];
$parola = $_POST['parola'];
$sifre = $_POST['sifre'];
$email = $_POST['email'];
$sehir = $_POST['sehir'];
$onay = 1;
$tarih = date("d.m.Y");
$ip = getenv("REMOTE_ADDR");

if($adsoyad=="" || $kullaniciadi=="" || $parola=="" || $sifre=="" || $email=="" || $sehir==""){
echo "

Yıldızlı Alanları Boş Bırakamazsınız!


Parolalarınız Birbirini Tutmuyor!


Lütfen Geçerli Bir E-Mail Adresini Yazınız (mailadi@mail.com)!


$kontrol = mysql_query($bak);
$kayitsayisi = mysql_num_rows($kontrol);

if ($kayitsayisi > 0) {
echo "

Yazdığınız Kullanıcıadı veya E-Mail Adresi Kullanılıyor!


$filename=$_FILES["$posted"]['name'];
$efilename = explode('.', $filename);
$uzanti = $efilename[count($efilename) - 1];
$uzantilar=array('jpg','png','gif');
$isim=rand(0,99999999);
$yeniad = "".$isim.".".$uzanti."";
$hedef1 = "uye_avatarlar/".$yeniad;
move_uploaded_file($_FILES["$posted"]['tmp_name'],"uye_avatarlar/".$yeniad);
}

$uyekayit = mysql_query("INSERT INTO uyeler (kulladi,parola,sifre,email,sehir,adsoyad,tarih,resim,onay,ip) values ('$kullaniciadi','$parolamd','$sifre','$email','$sehir','$adsoyad','$tarih','$hedef1','$onay','$ip')");

if ($uyekayit){
echo "

Teşekkürler! Üye Kaydınız Yapıldı!

Girişi Yapmak İçin BURAYA Tıklayınız!

";
}else{
echo "

Üzgünüm Üye Kaydınız Yapılamadı!


default:
yeniuyelik();
break;
case "uyekayit";
uyekayit();
break;
}
?>









Php versiyonu düşürdüğüm zaman (5.2 'ye) şu hatayı alıyorum

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent ....


Özet olarak ereg kodunu preg ile değiştirdiğim zaman hata almıyorum fakat üyeliğiniz oluşturulamadı hatası alıyorum kod gereği.... hata nerede?




ÇÖZÜLDÜ


Mert Köseoğlu sağolsun bayağı yardım etti buradan da teşekkür ederim..Çözüme gelirsek ilk mesajımda düzenlenmemiş sayfadaki kodu aşağıdaki kod ile değiştirdim;







function yeniuyelik(){ //yeniuyelik function başla
?>

















































































      
Yeni Üye Kaydı
 
 
Adınız ve Soyadınız
 

 *
 
Kullanıcı Adınız
 
 *
 
Parolanız
 

 *
 
Parola Tekrarlayınız
 

 *
 
E-Mail Adresiniz
 
 
*
 
Şehir Seçiniz
 

 *
 
Avatar Yüleyiniz
 
       
     

 



Ana Sayfa






#-------------------------------------------------------------------

include ("db_baglan.php");
function uyekayit(){ //uyekayit function başla

$adsoyad = $_POST['adsoyad'];
$kullaniciadi = $_POST['kullaniciadi'];
$parola = $_POST['parola'];
$sifre = $_POST['sifre'];
$email = $_POST['email'];
$sehir = $_POST['sehir'];
$onay = 1;
$tarih = date("d.m.Y");
$ip = getenv("REMOTE_ADDR"); // dene ve diyecegını soyle :Ç)
if($adsoyad=="" || $kullaniciadi=="" || $parola=="" || $sifre=="" || $email=="" || $sehir==""){
echo "


Yıldızlı Alanları Boş Bırakamazsınız!


Parolalarınız Birbirini Tutmuyor!


$kayitsayisi = mysql_num_rows($sql);

if ($kayitsayisi > 0) {
echo "

Yazdığınız Kullanıcıadı veya E-Mail Adresi Kullanılıyor!


$filename=$_FILES["$posted"]['name'];
$efilename = explode('.', $filename);
$uzanti = $efilename[count($efilename) - 1];
$uzantilar=array('jpg','png','gif');
$isim=rand(0,99999999);
$yeniad = "".$isim.".".$uzanti."";
$hedef1 = "uye_avatarlar/".$yeniad;
move_uploaded_file($_FILES["$posted"]['tmp_name'],"uye_avatarlar/".$yeniad);
}
$uyekayit = mysql_query("INSERT INTO uyeler (kulladi,parola,sifre,email,sehir,adsoyad,tarih,resim,onay,ip) VALUES ('$kullaniciadi','$parolamd','$sifre','$email','$sehir','$adsoyad','$tarih','$hedef1','$onay','$ip')") or die(mysql_error());


if ($uyekayit){ echo "

Teşekkürler! Üye Kaydınız Yapıldı!

Girişi Yapmak İçin BURAYA Tıklayınız!

"; }else{ echo "

Üzgünüm Üye Kaydınız Yapılamadı!


default:
yeniuyelik();
break;
case "uyekayit";
uyekayit();
break;
}
?>




 

 

wmaraci
reklam

MertKoseoglu MertKoseoglu Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 12.07.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek x
  • Konum Ankara
  • Ad Soyad M** K**
  • Mesajlar 659
  • Beğeniler 120 / 168
  • Ticaret 3, (%100)
Bence bunlara hiç gerek yok. Eğer e mail adresinin kontrol edilmesini istiyorsan;

$eposta = "emailadresin@hotmail.com";
if ( filter_var($eposta, FILTER_VALIDATE_EMAIL) ){
print 'e-posta gecerli';
} else {
print 'e-posta gecersiz!';
}
?>


bu şekilde kullanabilirsin.

Birde INSERT INTO ile veritabanına kayıt ettiğin değişkenleri bir kontrol et. Sana gelen değerler nasıl

Yok ben illa PHP Preg Match kullanarak e mail kontrolü yapmak istiyorum diyorsan;


$email = \"info@mkoseoglu.com\"; // onayli e mail duzeni
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
// regex duzeni yukarıda ki gibidir.
// e mail kontrol etmek ıcın preg_match() fonksiyonunu kullanıyoruz.
if (preg_match($regex, $email)) {
echo $email . \" Geçerli E-Mail Adresi. Teşekkürler.\";
} else {
echo $email . \" Geçerli değil. Lütfen Tekrar Deneyiniz..\";
}
?>
emreyavuz

kişi bu mesajı beğendi.

emreyavuz emreyavuz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 05.11.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Erzurum
  • Ad Soyad E** Y**
  • Mesajlar 132
  • Beğeniler 49 / 9
  • Ticaret 0, (%0)

MertKoseoglu adlı üyeden alıntı

Bence bunlara hiç gerek yok. Eğer e mail adresinin kontrol edilmesini istiyorsan;

$eposta = "emailadresin@hotmail.com";
if ( filter_var($eposta, FILTER_VALIDATE_EMAIL) ){
print 'e-posta gecerli';
} else {
print 'e-posta gecersiz!';
}
?>


bu şekilde kullanabilirsin.

Birde INSERT INTO ile veritabanına kayıt ettiğin değişkenleri bir kontrol et. Sana gelen değerler nasıl

Yok ben illa PHP Preg Match kullanarak e mail kontrolü yapmak istiyorum diyorsan;


$email = \"info@mkoseoglu.com\"; // onayli e mail duzeni
$regex = '/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/';
// regex duzeni yukarıda ki gibidir.
// e mail kontrol etmek ıcın preg_match() fonksiyonunu kullanıyoruz.
if (preg_match($regex, $email)) {
echo $email . \" Geçerli E-Mail Adresi. Teşekkürler.\";
} else {
echo $email . \" Geçerli değil. Lütfen Tekrar Deneyiniz..\";
}
?>


deniyorum inşallah olur

Ek Olarak:

emreyavuz adlı üyeden alıntı

deniyorum inşallah olur


Acaba benim kodlarıma nasıl entegre edebilirim kendim etmeye çalıştıum fakat yeni uyelik sayfasında şu hatayı aldım;


Warning: Unexpected character in input: '\' (ASCII=92) state=1 in /home/deneme/public_html/yeni_uyelik.php on line 218

Parse error: syntax error, unexpected '"' in /home/deneme/public_html/yeni_uyelik.php on line 220
 

 

MertKoseoglu MertKoseoglu Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 12.07.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek x
  • Konum Ankara
  • Ad Soyad M** K**
  • Mesajlar 659
  • Beğeniler 120 / 168
  • Ticaret 3, (%100)
Emin ol sordugun soruya karsi bundan daha iyi bir cevap verilemezdi :)
2 farkli yontem sundum sana. Kendi yazdigin kismi silip dene. Hata vermezse devam et. Benim sana verdigim kodlardan birini kullan. If else yapisi kullanilmis zaten. Hatayi yazmissin ama hamgi yontemo deneyip hata aldigini yazmamissin. Ustte ki kodu dener misin birde alttakini denedin sen muhtemelen.

Ek Olarak: Bu arada preg marth yontemini denediysen email degiskeninde yanlarda bulunan ters slashlara dikkat etmemis olabilirsin.

Ek Olarak: Aldigin hata php surumu ile ilgili bir hataya benziyor. Dosyanda phpinfo(); fonksiyonunu calistirarak surumune bakabilirsin.
emreyavuz

kişi bu mesajı beğendi.

wmaraci
wmaraci

emreyavuz emreyavuz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 05.11.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Erzurum
  • Ad Soyad E** Y**
  • Mesajlar 132
  • Beğeniler 49 / 9
  • Ticaret 0, (%0)

MertKoseoglu adlı üyeden alıntı

Emin ol sordugun soruya karsi bundan daha iyi bir cevap verilemezdi :)
2 farkli yontem sundum sana. Kendi yazdigin kismi silip dene. Hata vermezse devam et. Benim sana verdigim kodlardan birini kullan. If else yapisi kullanilmis zaten. Hatayi yazmissin ama hamgi yontemo deneyip hata aldigini yazmamissin. Ustte ki kodu dener misin birde alttakini denedin sen muhtemelen.

Ek Olarak: Bu arada preg marth yontemini denediysen email degiskeninde yanlarda bulunan ters slashlara dikkat etmemis olabilirsin.

Ek Olarak: Aldigin hata php surumu ile ilgili bir hataya benziyor. Dosyanda phpinfo(); fonksiyonunu calistirarak surumune bakabilirsin.



Problem bende herhalde şu kod yerine;

elseif (!eregi ("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$", $email)) {
echo "

Lütfen Geçerli Bir E-Mail Adresini Yazınız (mailadi@mail.com)!


} else {
print 'e-posta gecersiz!';
}



bu hatayı alıyorum;

Parse error: syntax error, unexpected T_ELSEIF


php yi yeni yeni öğrendiğim için nerede hata olduğunu anlayamıyorum yardımcı olabilir misiniz?

Ek Olarak; $email'in yanındaki ters slash derken hangisini kastettiniz? bu arada problem php sürümü ile alakalı versiyonu başka bir hostta sıkıntısız çalışmıştı...

emreyavuz emreyavuz Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 05.11.2013
  • Yaş/Cinsiyet 29 / E
  • Meslek Öğrenci
  • Konum Erzurum
  • Ad Soyad E** Y**
  • Mesajlar 132
  • Beğeniler 49 / 9
  • Ticaret 0, (%0)

MertKoseoglu adlı üyeden alıntı

Tamam unut ters slashi ustteki yontemi kullanacagiz. Aldigin hata } bu parantezlerin ya biri fazla ya da biri eksik hemen bunu kontrol et olmadi pc gecince ben yazarim.


kaç aydır php ile uğraşıyorum eğer bu kadar süredir yanlış bilmiyorsam { işaretlerinde sıkıntı yok.... size zahmet... :o

Ek Olarak: ÇÖZÜLDÜ...ÇÖZÜM İLK MESAJDA... TEŞEKKÜRLER MertKoseoglu
 

 

MertKoseoglu MertKoseoglu Üyeliği Durdurulmuş Banlı Kullanıcı
  • Üyelik 12.07.2013
  • Yaş/Cinsiyet 28 / E
  • Meslek x
  • Konum Ankara
  • Ad Soyad M** K**
  • Mesajlar 659
  • Beğeniler 120 / 168
  • Ticaret 3, (%100)

emreyavuz adlı üyeden alıntı

kaç aydır php ile uğraşıyorum eğer bu kadar süredir yanlış bilmiyorsam { işaretlerinde sıkıntı yok.... size zahmet... :o

Ek Olarak: ÇÖZÜLDÜ...ÇÖZÜM İLK MESAJDA... TEŞEKKÜRLER MertKoseoglu


Bilgi olarak;

Ereg Fonksiyonu Php 5.3.0 ve üzeri sürümlerde çalışmamaktadır.
Bunu preg_match'a çevirmek için tek yapmanız gereken altta görmüş olduğunuz üzere başına ve sonuna slah işareti konulur.


ereg('^test', $veri);
preg_match('/^test/', $veri);
 

 

wmaraci
Konuyu toplam 2 kişi okuyor. (0 kullanıcı ve 2 misafir)