PHP Bilenler

  • Konbuyu başlatan Konbuyu başlatan earl
  • Başlangıç tarihi Başlangıç tarihi
Kodla Büyü

earl

Süper Üye
Süper Üye
Seçkin Üye
Mesajlar
1,700
Ufak bir sorum var.

elimde 2 tane dosya var.

birincisinin adı uyeol.htm
--------------------------------
uyeol.htm içinde
$sifre
isimli bir değişken tanımladım.




ikinci dosyamın adı uyeolislem.php
-----------------------------------------
<?php
burada $sifre değişkenine ulaşamıyorum. uyeol.htm dosyasının içinde yer alan değişkenlere buradan nasıl ulaşabilirim?
?>

umarım anlatabilmişimdir. Cevabınız için şimdiden teşekkürler.
 
uyeol.html isimli dosyan muhtemelen üyelik formunun buşundugu dosyadır. buradan <form action="uyeolislem.php" method="post"> şeklinde gönderme işlemi yapasın ki diğer dosya içerisinde o değişkeni okuyabilesin.
 
<form action="uyeolislem.php" method="post">

satırı aynen yazdığın gibi var, yani olay tahmin ettiğin gibi ama uyeolislem.php çalıştığında şu hatayı veriyor.

Notice: Undefined variable: sifre in c:\program files\easyphp1-8\www\php\uyeolislem.php on line 10

Notice: Undefined variable: sifretekrar in c:\program files\easyphp1-8\www\php\uyeolislem.php on line 10

Allah Allah :?
 
uyeol.htm
---------------
Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Üye Sayfası</title>
</head>
<body>
<form action="uyeolislem.php" method="post">
<center>
<table border="0" width="70%">

<tr>
<td width="50%" align="right">
<font face="verdana">Adınız</font></td>
<td width="50%" align="left"><input type="text" name="ad" size="20"/></td>
</tr>

<tr>
<td width="50%" align="right">
<font face="verdana">Soyadınız</font></td>
<td width="50%" align="left"><input type="text" name="soyad" size="20" /></td>
</tr>

<tr>
<td width="50%" align="right"><font face="verdana">Kullanıcı adı:</font></td>
<td width="50%" align="left"><input type="text" name="kullaniciadi" size="20" /></td>
</tr>

<tr>
<td width="50%" align="right">
<font face="verdana">Şifre</font></td>
<td width="50%" align="left"><input type="password" name="sifre" size="20" /></td>
</tr>

<tr>
<td width="50%" align="right"><font face="verdana">Şifre (Tekrar)</font></td>
<td width="50%" align="left"><input type="password" name="sifretekrar" size="20" /></td>
</tr>

<tr>
<td width="50%" align="right"><font face="verdana">E-Mail</font></td>
<td width="50%" align="left"><input type="text" name="email" size="20" /></td>
</tr>

<tr>
<td width="50%" align="right" valign="top"><font face="verdana">Görüşleriniz:</font></td>
<td width="50%" align="left"><textarea rows="5" name="gorus" cols="20"></textarea></td>
</tr>

<tr>
<td width="50%" align="right"><input type="reset" value="Formu Sil" /></td>
<td width="50%" align="left"><input type="submit" value="Gönder" /></td>
</tr>
</table>
</center>
</form>



</body>
</html>
 
bu da uyeolislem.php
-------------------------

Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Üye İşlem Sayfası</title>
</head>
<body>
<?php

if ($sifre==$sifretekrar)
{
echo "Girilen şifreler birbirine eşittir.";
}
?>

</body>
</html>
 
hocam 2 yıldır php dersine girmiyorum, hatırlayabildiğim kadarı ile yaptığınız işlemler doğru görünüyor

galiba easy php kullanıyorsunuz. Daha önce çalıştırdığıız başka bir php dosyasını deneyerek easy php nin düzgün çalıştığından emin olun
 
Çözdüm
uyeolislem.php yi böyle yapınca çözüldü
Kod:
if ($_POST["sifre"] == $_POST["sifretekrar"])
{
echo "Girilen şifreler birbirine eşittir.";
}
?>

lakin bunun daha kısa bir yolu yok mu?

her defasında $_POST yazmak zorunda mıyım?
 
$sifre=$HTTP_POST_VARS[sifre] şeklinde okumalısın veya senin yaptığın gibi okumalısın. aksi takdirde o değişkeni başka bir sayfa içerisinde okuyamazsın
 
rtyucel' Alıntı:
$sifre=$HTTP_POST_VARS[sifre] şeklinde okumalısın veya senin yaptığın gibi okumalısın. aksi takdirde o değişkeni başka bir sayfa içerisinde okuyamazsın

Sağol delianlı. Az önce buldum sorunu $_REQUEST ile de oluyor. $_REQUEST komutu $_GET, $_POST ve $_COOKIE den gelen değişkenleri yakalıyor. Yani babaları gibi bişi.

Tabi $_REQUEST kullanırsak aynı isimdeki post, get değişkenini owervrite ediyormuş.

İlerde fayadalanacak olanlara not düşmüş oldum.
 
Bu konuda daha ayrıntılı bilgi isteyenler İnternet Programcılığı -4 modülüne de bakabilirler ;)
 
Daha detaylı bilgi için Tarihi Osmanlı Mecmuası'nın 3. cildinin 47....

neyse php çalışmaktan beynim yoruldu. böyle acayip espiriler aklıma gelmeye başladı. :)

Sağol rtyucel.
 
Rica ederim delianlı :)
Arasıra dinlen blog da bişeyler yaz
ff de paylaşımlarda bulun ya da çık dolaş
 
mirayabravci' Alıntı:
bu da uyeolislem.php
-------------------------

Kod:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Üye İşlem Sayfası</title>
</head>
<body>
<?php

if ($sifre==$sifretekrar)
{
echo "Girilen şifreler birbirine eşittir.";
}
?>

</body>
</html>

hocam unuttuğun bişey var. PHP dosyasında GET yada POST ile çektiğin verileri tutacak DEĞİŞKENLER TANIMLAMALISIN. yoksa her seferinde _POST şeklinde başlayan kodu yazman gerekir. HTML dosyası değişkenleri PHP dosyasına aktarıyor fakat PHP dosyasında o değişkenleri tutacak değişkenler tanımlı olmadığı için "BÖYLE BİR DEĞİŞKEN YOK" hatası alıyorsun. REQUEST yerine POST kullanmak güvenlik açısından daha sağlıklı olur.
 
php.ini dosyasındaki register _globals=off satırını bulup register_globals=on yaparsanız ilk yönteminiz de çalışacaktır. Fakat ikinci yazdğınız komut ile çalışmak daha güvenlidir hocam.
 
PHP'de register global kapalı olduğunda, $_REQUEST değişkeni içerisindekilere doğrudan değişken adıyla ulaşamazsınız. Güvenlik nedeniyle yeni sürüm PHP'lerde bu ayar disable olarak ayarlanmıştır ve öyle kalması da güvenlik için gereklidir. Eğer her değişken için $_POST kullanmak istemiyorsanız; http://tr.php.net/manual/tr/function.extract.php fonksiyonunu inceleyip, kullanabilirsiniz. extract fonksiyonu dizilerdeki anahtar isimleri kullanarak, diziyi değişkenlere ayırır.
 
form methodu POST ise
Kod:
<?php
print_r($_POST);
?>
GET ise
Kod:
<?php
print_r($_GET);
?>
komutlarıyla değişkenlere ulaşabilirsin
 
unknownrealmman' Alıntı:
php.ini dosyasındaki register _globals=off satırını bulup register_globals=on yaparsanız ilk yönteminiz de çalışacaktır. Fakat ikinci yazdğınız komut ile çalışmak daha güvenlidir hocam.
ciddi güvenlik açığı oluşur hocam. PHP 4.2.0 sürümünden itibaren hep OFF olarak ayarlanmıştır. ON olursa dışarıdan script çalıştırma veya yetkisiz girişler gibi açıklar oluşur....
 
mirayabravci' Alıntı:
Çözdüm
uyeolislem.php yi böyle yapınca çözüldü
Kod:
if ($_POST["sifre"] == $_POST["sifretekrar"])
{
echo "Girilen şifreler birbirine eşittir.";
}
?>

lakin bunun daha kısa bir yolu yok mu?

her defasında $_POST yazmak zorunda mıyım?

Sayfanın başında extract($_POST) metodunu kullanarak bu zorunluluktan kurtulabilirsiniz. Bunu kullandığınız takdirde dosyaya post edilen tüm değişkenler otomatik olarak kendi isimlerinde oluşturulacak ve değerler bunlara atanacaktır. Metoda parametre olarak $_POST şart değildir. Her türlü dizi gönderilebilir.
(bkz. http://www.php.net/manual/tr/function.extract.php)

Kod:
<?php

extract($_POST);

if ($sifre == $sifretekrar)
{
echo "Girilen şifreler birbirine eşittir.";
}

?>
 
BBNET
Geri
Üst