muratboy31 Posted November 25, 2015 Share Posted November 25, 2015 (edited) Merhaba arkadaşlar, aşağıdaki php sayfasın nasıl string (txtKeyword) gönderebilirim ? <? header('Content-Type: text/html; charset=utf-8'); $objConnect = mysql_connect("localhost","user","pass"); $objDB = mysql_select_db("deneme"); mysql_query("SET NAMES utf8"); $strKeyword = $_POST["txtKeyword"]; $strSQL = "SELECT * FROM Employee WHERE FirstName LIKE '%".$strKeyword."%' ORDER BY FirstName ASC "; $objQuery = mysql_query($strSQL); $intNumField = mysql_num_fields($objQuery); $resultArray = array(); while($obResult = mysql_fetch_array($objQuery)) { $arrCol = array(); for($i=0;$i<$intNumField;$i++) { $arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i]; } array_push($resultArray,$arrCol); } mysql_close($objConnect); echo json_encode($resultArray); ?> Edited November 25, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 25, 2015 Share Posted November 25, 2015 c# kısmı: public static string base64encode(string text) { var textByte = System.Text.Encoding.UTF8.GetBytes(text); return System.Convert.ToBase64String(textByte); } public static string GetPageSource(string url) { var webrequest = (HttpWebRequest)WebRequest.Create(url); webrequest.Method = "GET"; var webResponse = (HttpWebResponse)webrequest.GetResponse(); string responseHtml; using (var responseStream = new StreamReader(webResponse.GetResponseStream())) { responseHtml = responseStream.ReadToEnd().Trim(); } return responseHtml; } string text = textBox1.Text; string enc_text = base64encode(text); string GELEN_JSON = GetPageSource("http://www.site.com/sayfa.php?txtKeyword=" + enc_text); php kısmı: <? header('Content-Type: text/html; charset=utf-8'); $objConnect = mysql_connect("localhost","user","pass"); $objDB = mysql_select_db("deneme"); mysql_query("SET NAMES utf8"); $strKeyword = base64_decode($_GET["txtKeyword"]); $strSQL = "SELECT * FROM Employee WHERE FirstName LIKE '%".$strKeyword."%' ORDER BY FirstName ASC "; $objQuery = mysql_query($strSQL); $intNumField = mysql_num_fields($objQuery); $resultArray = array(); while($obResult = mysql_fetch_array($objQuery)) { $arrCol = array(); for($i=0;$i<$intNumField;$i++) { $arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i]; } array_push($resultArray,$arrCol); } mysql_close($objConnect); echo json_encode($resultArray); ?> Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 26, 2015 Author Share Posted November 26, 2015 Teşekkürler Kintaro, ancak nedense tüm listeyi getiriyor ! sadece murat olanlar gelmiyor ; try { using (WebClient client = new WebClient()) { string data = GetPageSource("http://172.16.0.6/rehber/rehber.php?txtKeyword=" + base64encode("Murat")); List<Employee> Employees = JsonConvert.DeserializeObject<List<Employee>>(System.Text.Encoding.UTF8.GetString(System.Convert.FromBase64String(data))); foreach (Employee Employee in Employees) { ListBoxItem item = new ListBoxItem(); item.Text = Employee.FirstName.ToString(); listBoxAdv1.Items.Add(item); } label1.Text = listBoxAdv1.Items.Count.ToString(); } } catch (Exception hataTuru) { MessageBox.Show(hataTuru.ToString()); } Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 26, 2015 Share Posted November 26, 2015 FirstName LIKE '%".$strKeyword."%' FirsName içinde murat kelimesini içeren her satırı getir demişsin, ondan olabilir Murat Ali Murat Veli gibi yani. FirstName LIKE '".$strKeyword."' böyle denesen? Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 26, 2015 Author Share Posted November 26, 2015 (edited) Yok aslında zaten istediğim o yane o kelime içeren hepsi gelsin, gerçe dediğini yaptım yine aynı, tüm liste geliyor !; Edited November 27, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 26, 2015 Share Posted November 26, 2015 yeni bir php dosyası yaratıp aşağıdaki kodları yazın ve web sayfasından şu linki açıp o sayfayı çalıştırın bakalım ne sonuç verecek: http://172.16.0.6/rehber/yenisayfa.php?txtKeyword=TXVyYXQ= <? header('Content-Type: text/html; charset=utf-8'); $objConnect = mysql_connect("localhost","user","pass"); $objDB = mysql_select_db("deneme"); mysql_query("SET NAMES utf8"); $strKeyword = base64_decode($GET["txtKeyword"]); $strSQL = "SELECT * FROM Employee WHERE FirstName LIKE '".$strKeyword."' ORDER BY FirstName ASC "; $objQuery = mysql_query($strSQL); echo "<table><tr><td>İsim</td><td>Soyisim</td></tr>"; while($veri = mysql_fetch_array($strSQL)) { $isim = $veri["FirstName"]; $soyisim = $veri["Surname"]; echo "<tr><td>$isim</td><td>$soyisim</td></tr>"; } echo "</table>"; ?> Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 26, 2015 Author Share Posted November 26, 2015 ?sim Soyisim Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 26, 2015 Share Posted November 26, 2015 team viewer bilgilerini verir misin pm ile. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 27, 2015 Author Share Posted November 27, 2015 (edited) Halettim arkadaşlar, $strKeyword = base64_decode($_GET["txtKeyword"]); $strKeyword = base64_decode($GET["txtKeyword"]); Edited November 27, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 27, 2015 Share Posted November 27, 2015 evet ezberden yazdım, denemedim gözden kaçmış :D update, insert gibi diğer komutlar için aynı yöntemi kullanabiliriz. bu sefer get ile aldığımız veri komple sql sorgusu olacak yani şu şekilde: C#: GetPageSource("http://172.16.0.6/rehber/rehber.php?txtKeyword=" + base64encode("UPDATE ayarlar SET firma_id='3'")); PHP: $strKeyword = base64_decode($_GET["txtKeyword"]); $sorgu = mysql_query($strKeyword); if ($sorgu == FALSE) { echo "sql sorgusunda hata"; } else { echo "sorgu başarılı"; } Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 27, 2015 Author Share Posted November 27, 2015 evet denedim çalışıyor yalnız bu çok tehlikeli göründü bana... herhangi biri base64 sorgu gönderse veritabanına saçma sapan veriler doldurur... bunun güvenliğini nasıl sağlayabiliriz acaba ? Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 27, 2015 Share Posted November 27, 2015 evet güzel düşünmüşsün, buna SQL Injection deniyor, Şu şekilde koruma sağlayabilirsiniz: $temizlenmis_veri = mysql_real_escape_string($gelen_text); mysql_query($temizlenmis_veri); eğer bu yapılmazsa yeni sorgu olarak ya da giden sorguya ek yapılarak veritabanında istenilen işlem yapılabilir. ek güvenlik olarak ise benzersiz bir key kullanabilirsiniz. örn: C#GetPageSource("www.site.com/sayfa.php?txtVeri=1430qwdq34=&gizli_key=239048923049032fjwdeıjfn");PHP:if ($_GET['gizli_key'] == "239048923049032fjwdeıjfn") { // çalışacak veriler } else { echo "doğrulama başarısız"; }hala güvensiz olduğunu düşünürseniz gizli_key'i de blowfish ile şifreleyebilirsiniz :) Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 30, 2015 Author Share Posted November 30, 2015 (edited) Teşekkürler Kintaro, aslında aklıma daha güvenli birşey geldi, yalnız $sorgu = mysql_query($strLogin); sorgusunu nasıl göndermem gerekir, true yada false dönmesi için ? veri tabınında user tablosunda kullanı adı ve şifre kayıtlı olcak. $strKeyword = base64_decode($_GET["txtKeyword"]); $strLogin = base64_decode($_GET["txtLogin"]); $sorgu = mysql_query($strLogin); if ($sorgu == FALSE) { echo "Kullanıcı Adı veya Şifre Hatalı"; } else { mysql_query($strKeyword); } Edited November 30, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 30, 2015 Share Posted November 30, 2015 C# GetPageSource("http://www.site.com/sayfa.php?textWord=" + textBox1.Text + "&user=kintaro&pass=123456); PHP $user = base64_decode($_GET["user"]); $pass = base64_decode($_GET["pass"]); $sorgu = mysql_query("SELECT * FROM users WHERE user='$user' AND pass='$pass'"); // gelen kullanıcı adı ve şifre ile bir kullanıcı mevcut mu diye bak if (mysql_num_rows($sorgu) > 0) // sorgu sonucunda dönen satır sayısı 0 dan büyükse { // çalışacak kodlar } else { echo "user pass hatalı"; } user ve pass'ı ben burada direk gönderip/aldım. ama şifreler genelde veritabanında md5 ile tutulur, yine base64 de kullanabilirsiniz. aklınızda olsun. Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 30, 2015 Author Share Posted November 30, 2015 Çok teşekkürler Kintaro, ufak bir sorum daha var ; echo "user pass hatalı"; ile dönen mesajı windows form da messagebox ile nasıl gösterebiliriz ? Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 30, 2015 Share Posted November 30, 2015 string sorgu = GetPageSource("http://www.site.com/sayfa.php?textWord=" + textBox1.Text + "&user=kintaro&pass=123456); if (sorgu == "user pass hatalı") { MessageBox.Show("hatalı giriş"); } else { string json = sorgu; jsonDecode... // ya da ne tür bir işleminiz varsa } Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 30, 2015 Author Share Posted November 30, 2015 Teşekkürler Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 30, 2015 Author Share Posted November 30, 2015 (edited) Burda ne yanlış olabilir ? <? header('Content-Type: text/html; charset=utf-8'); $objConnect = mysql_connect("localhost","user","pass"); $objDB = mysql_select_db("rehberdeneme"); mysql_query("SET NAMES utf8"); $strKeyword = base64_decode($_GET["txtKeyword"]); $strSQL = "SELECT * FROM Employee WHERE EmployeeID = '".$strKeyword."'; $objQuery = mysql_query($strSQL); $intNumField = mysql_num_fields($objQuery); $resultArray = array(); while($obResult = mysql_fetch_array($objQuery)) { $arrCol = array(); for($i=0;$i<$intNumField;$i++) { $arrCol[mysql_field_name($objQuery,$i)] = $obResult[$i]; } array_push($resultArray,$arrCol); } mysql_close($objConnect); echo base64_encode(json_encode($resultArray)); ?> Edited November 30, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted November 30, 2015 Share Posted November 30, 2015 ilk bakışta bir sorun görünmüyor. EmployeeID = $strKeyword yerine EmployeeID = '$strKeyword' dener misiniz Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted November 30, 2015 Author Share Posted November 30, 2015 evet bende çözdüm, sorun ordaymış :) Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted December 8, 2015 Author Share Posted December 8, 2015 (edited) Merhaba, ufak bir sorum var, ben hem kontrol yapmak istiyorum hemde bazı bilgiler almak istiyorum eğer o kullanıcı mevcutsa ancak yapamadım ! <? header('Content-Type: text/html; charset=utf-8'); $objConnect = mysql_connect("localhost","root","pass"); $objDB = mysql_select_db("deneme"); mysql_query("SET NAMES utf8"); $user = base64_decode($_GET["user"]); $pass = base64_decode($_GET["pass"]); $sorgu = mysql_query("SELECT * FROM Users WHERE UserName='$user' AND Pass='$pass'"); if (mysql_num_rows($sorgu) > 0) { echo "success"; while($veri = mysql_fetch_array($sorgu )) { echo $veri["Auth"]; } } else { echo "error"; } ?> Edited December 8, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted December 8, 2015 Share Posted December 8, 2015 while($veri = $sorgu)) değil while($veri = mysql_fetch_array($sorgu))) olacak Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted December 8, 2015 Author Share Posted December 8, 2015 (edited) Teşekkürler, peki aynı anda birden fazla echo döndürürsek bunları nasıl yakalayabiliriz C# ta, mesela ben hem success hemde Auth döndürmek istiyorum ; <? header('Content-Type: text/html; charset=utf-8'); $objConnect = mysql_connect("localhost","root","pass"); $objDB = mysql_select_db("deneme"); mysql_query("SET NAMES utf8"); $user = base64_decode($_GET["user"]); $pass = base64_decode($_GET["pass"]); $sorgu = mysql_query("SELECT * FROM Users WHERE UserName='$user' AND Pass='$pass'"); if (mysql_num_rows($sorgu) > 0) { echo "success" while ($row = mysql_fetch_assoc($sorgu)) { echo $row['Auth']; } } else { echo "error"; } ?> C# ta böyle çekebiliyorum error yada success ama bu sefer Auth ta çekecem ; if (sorgu == "error") { MessageShow("Hatalı Giriş !"); } Edited December 8, 2015 by muratboy31 Quote Link to comment Share on other sites More sharing options...
KintaRo Posted December 8, 2015 Share Posted December 8, 2015 dönecek kelimeleri yanyana echo edip daha sonra c# tarafında string.Split ile ayırıp kullanabilirsiniz. string kelimeler = "selam;naber;neyaptin"; string[] parcala = kelimeler.Split(';'); foreach (string kelime in parcala) { MessageBox.Show(kelime); } Quote Link to comment Share on other sites More sharing options...
muratboy31 Posted December 8, 2015 Author Share Posted December 8, 2015 Teşekkürler Kintaro, bu sorguda real escape string nasıl kullanılır acaba ; $strSQL = "SELECT * FROM Employee WHERE OfficeID = $OfficeID AND Active = '1' AND FirstName LIKE '%".$strKeyword."%' ORDER BY FirstName ASC "; Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.