ikinci post işlemi Nasıl yapabilirim ?

Web tabanlı uygulama geliştirme araçları(PHP, ASP vb...) ile ilgili konuları buraya yazabilirsiniz.
Cevapla
DelphiNV
Üye
Mesajlar: 54
Kayıt: 28 Oca 2005 03:15
Konum: Bursa

ikinci post işlemi Nasıl yapabilirim ?

Mesaj gönderen DelphiNV »

Selam Arkadaşlar ;


Php Konusunda ii değilim. Fakat Şöyle Bişey yapmam lazım..

kullanıcı adı ve şifre kontrolü yaptırdığım da (database den) kullanıcı adı ve şifre doğru ise başka bir siteki bir sayfaya bu kullanıcı adı ve şifreyi post ettirerek o safyadan login olmak istiyorum...


örnek : http://www.benimsitem.com/kontol.php ye form dan post ettiğim kullanıcı adı ve şifre databaseden kontrol edildiğinde doğru ise http://www.digersite.com/login.php' ye tekrar post edilsin ve bu sayfa karşıma gelsin...


database bağlantısını kontrolü falan yaptım fakat diğer siteye post işlemini yapamadım..



kolay gelsin.
mkysoft
Kıdemli Üye
Mesajlar: 3108
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

bunun için meta taglarından yararlanabilirsin. refresh diye bir tag var. süresini 0 girersen anında sayfa yenilenerek istediğin yere gider.
onaydin
Üye
Mesajlar: 202
Kayıt: 07 Şub 2006 02:30

Mesaj gönderen onaydin »

A sitesinde kontrolü yapalım doğruysa veriyi b sitesine post edelim. Öncelikle bunu yapmak için php de bilmediğimiz bir şey yapmamıza gerek yok, bildik kontrolü kullanacağız ama işin püf noktası javascript tarafında.

1. Gönder butonunuzun tipi Submit olmayacak type="button" diyeceksiniz böyle olunca form otomatik olarak action="asitesi-kontrol.php" ye gitmeyecek bizim manuel olarak form.submit() dememizi bekleyecek.
2. Formun gideceği sayfayı son olarak göstermek istediğiniz sayfa olarak seçeceksiniz, action="bsitesi-login.php". asitesinde kontrol yapmadan b sitesine formu yollamamam gerekiyorsu diyeceksiniz onu formu submit etmeden tünel kazarak yapıcaz. Nasıl oluyoru

3. Bir tane ajax versiyonu bulun ben kullandığımı ekleyeyim
ajax.js

Kod: Tümünü seç

// JavaScript Document
function DoCallback(data)
{
    // branch for native XMLHttpRequest object
	document.getElementById("yukle").className = '';
    if (window.XMLHttpRequest) {
        req = new XMLHttpRequest();
        req.onreadystatechange = processReqChange;
        req.open('POST', url, true);
        req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        req.send(data);
    // branch for IE/Windows ActiveX version
    } else if (window.ActiveXObject) {
        req = new ActiveXObject('Microsoft.XMLHTTP')
        if (req) {
            req.onreadystatechange = processReqChange;
            req.open('POST', url, true);
            req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
            req.send(data);
        }
    }
}

function processReqChange() {
    // only if req shows 'loaded'
    if (req.readyState == 4) {
        // only if 'OK'
        if (req.status == 200) {
            eval(what);
			document.getElementById("yukle").className = 'hidden';
        } else {
            alert('There was a problem retrieving the XML data: ' +
                req.responseText);
        }
    }
}
Bu kodu asitesindeki kontrol formumuzdan çağırın. 'yukle' adında bir div oluşturun ve style olarak display:none deyin. Bu div içine yükleniyor şekline bir yazı koyun.
İkinci olarak asitesindeki formumuza bir kaç jscript fonksiyonu ekleyelim.

form.html

Kod: Tümünü seç

	var url = "login_server.php";
	var what = "LoginStatus(req.responseText)";
	
	function CheckLogin()
	{
		var username = document.getElementById("uye_email").value;
		var password = document.getElementById("uye_sifre").value;
		document.getElementById("mesaj").className = 'hidden';
		DoCallback("username="+username+"&password="+password);
	}
	
	function LoginStatus(Status)
	{
		var mesaj = document.getElementById("mesaj");
		mesaj.className = '';
		if(Status == 0)
			mesaj.innerHTML = "Geçersiz şifre <br> Yeni şifrenizin e-mail adresinize gönderilmesini istiyorsanız tıklayınız. ";
		if(Status == 1) {
			//window.location="index.php";
			mesaj.innerHTML = "Üye girişi başarılı";
			document.getElementById("forma").submit();
		}
		if(Status == 2) {
			 mesaj.innerHTML = "E-Mail adresi bulunamadı, üye değilseniz aşağıdaki formu doldurarak işlemi gerçekleştirebilirsiniz.";
					}
		if(Status == 3) {
			mesaj.innerHTML = "E-mail adresinizi ve şifrenizi giriniz. Üye değilseniz aşağıdaki bilgileri doldurabilirsiniz.";
		}

	}
login_kontrol.php

Kod: Tümünü seç

		if(strlen($prl) == 32) {
			if($password == $prl) {
				$_SESSION['uye_id'] = $uye_id;
				echo 1;
			}
			else
				echo 0;
		}
		else {
			echo 2;
		}
    }
Şimdi formun içindeki butonun onClick eventide fonksiyonu çağıracak

Kod: Tümünü seç

<input type="button" name="Submit2" value="Gönder" onClick="CheckLogin()">
Şimdi yukardaki meseleyi biraz açayım, onclick e tıklayınca, uye_email ve uye_sifre id li inputlarındaki veriler asitesinin içine yerleştirdigimiz login_server.php dosyasına gönderilecek, bu aşamada yukarda oluşturduğumuz yukle adlı div aktif hale gelecek ve yükleniyor yazısı duracak sonra login_server.php gelen veriye göre bize bir çıktı verecek
ben burda kontrollerimde 0,1,2,3 gibi değerler döndürüyorum. Mesela 1 dediğinde login başarılı olmuş oluyor ve login_server.php dosyasında bu kullanıcının aynı zamanda sessionunu register etmiş oluyorum. Ön yüzde de mesaj isimli bir div içine hangi mesajın geleceğini yazıyorum (mesaj.innerHMTL). login_server.php bize bir sonuc dönüp yüklemesi bittiğinde yukle div tekrar gözükmez oluyor ve mesela 1 geldiyse
document.getElementById("forma").submit(); diyerek formu submit ediyorum bu durumda formun gideceği yer neresi derseniz
bsitesini login formu olacak, istersek bu kısmıda yeni bir tünel açıp ordan yapabilirsiniz ama neticede son site o olduğundan ona post etmekde bir sorun yok.

4. Bu tünel işlemini gerçekleştirirken veri get ile gidiyor ve server log dosyasında şifre gözükür onun içinde md5.js scripti olacak password alanını md5 leyip öylgöndermenizde fayda var.
mkysoft
Kıdemli Üye
Mesajlar: 3108
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

<meta http-equiv=”refresh” content=”0; URL=http://benimsitem.com/index.php?lang=tr ... word=12345”>
HTML kodunu oluşturacak bir php yazman yeterli.
onaydin
Üye
Mesajlar: 202
Kayıt: 07 Şub 2006 02:30

Mesaj gönderen onaydin »

@mkysoft refresh le yapılan bu işlemde şifremin, kredi kartı bilgilerimin veya post ile göndermek istediğim gizli bilgierin yanımda duran kişi tarafından browserın adres çubuğunda görülmesini, daha sonra o bilgisayara oturacak kişinin geçmiş bağlantılardaki mevcut adrese tıklayarak haberim olmadan giriş yapmasını, adres çubuğunda hedef sitenin adresini yazarken otomatik tamamlamada çıkmamasını ya da server log filelarını inceleyen biri tarafından görülmemesi istiyorum.

Bunu refresh le nasıl yapabileceğimizi de açıklayabilir misiniz?
mkysoft
Kıdemli Üye
Mesajlar: 3108
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Bu şekilde yapılan bir post işleminde tabiki bilgiler gözükecektir. 2. bir site aracılığı ilr kim banka şifresi gibi önemli bilgilerini girmek isterki?
Denemedim ama java script ile yapılabilir gibi geldi bana. frame yapısı kullanarak 2. sitedeki kutuları java script yardımıyla doldurabilirsiniz. ama tıklama nasıl olacak onu kestiremiyorum.
mkysoft
Kıdemli Üye
Mesajlar: 3108
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Mesaj gönderen mkysoft »

Cevap yazdıktan sonra ufak bir araştırma yaptım.
http://www.willmaster.com/possibilities ... 0001.shtml adresinde formun nasıl post edilebileceği anlatılıyor. Burada yapman gereken document.complate olayını kullanmak. googleda ararsan bulabilirsin.
kolay gelsin.
onaydin
Üye
Mesajlar: 202
Kayıt: 07 Şub 2006 02:30

Mesaj gönderen onaydin »

Yukarda cevap yazıyor boşvere başka sitelerde aramaya gerek yok. Kaldıki arkadaşın kendi bulduğu curl de iyi bir yöntem bu iş için.
Cevapla