Dinamik olarak jQuery kullanarak bir PHP dosyası içinde MYSQL sorgusu değiştirin. Gönderebilir?

2 Cevap php

Artık uzunca bir süre için bu çalışıyor ve yardıma ihtiyacım var olmuştur. Temelde ben veritabanını sorgulayan bir PHP dosyası var ve ben bir giriş kullanıcılar adına dayalı sorguyu değiştirmek istiyorum.

Ne sitemde olur bir kullanıcı Twitter oauth ile oturum ve onların ayrıntıları (twitter kullanıcı adı, vb) göstermek olabilir. Ben kullanıcı bilgileri eklemiştir bir veritabanı var ve kullanıcı Twitter OAuth ile açtığında ben ne olmasını istiyorum, ben sadece sonuçlarını göstermek için mysql sorgu kullanıcıların kullanıcı adı almak ve güncellemek için jQuery kullanmak nerede user_name = belirli kullanıcılar isim.

Şu anda mysql sorgu:

"SELECT * FROM markers WHERE user_name = 'dave'"

Ben böyle bir şey denedim:

"SELECT * FROM markers WHERE user_name = '$user_name'"

Ve başka bir yerde ben $ user_name = $ _POST ['user_name'] var PHP dosyasında;. Ayrı bir dosya (kullanıcı onlar Twitter üzerinden giriş yaptıktan sonra yönlendirilecek olduğu bir) ben bu gibi bazı jQuery var:

$(document).ready(function(){
$.post('phpsqlinfo_resultb.php',{user_name:"<?PHP echo $profile_name?>"})});

$ Profile_name bu sayfada daha önce tanımlanmıştır.

Ben açıkça yanlış bir şey yaptığımı biliyorum, ben hala öğreniyorum. Ben kullanıcıların Aşağıda sorgu ile PHP dosyasını dahil ettik oturum açmış kullanıcı ile ilgili sadece sonuçlarını görüntülemek için mysql sorguyu değiştirmek için PHP dosyası username göndermek için jQuery kullanarak istediğiniz bir şeyi elde etmek için bir yolu var mı :

    <?php
// create a new XML document
//$doc = domxml_new_doc('1.0');
$doc = new DomDocument('1.0');

//$root = $doc->create_element('markers');
//$root = $doc->append_child($root);
$root = $doc->createElement('markers');
$root = $doc->appendChild($root);
$table_id = 'marker';
$user_name = $_POST['user_name'];
// Make a MySQL Connection
include("phpsqlinfo_addrow.php");
    $result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'")
    or die(mysql_error());
// process one row at a time
//header("Content-type: text/xml");
header('Content-type: text/xml; charset=utf-8');
while($row = mysql_fetch_assoc($result)) {
    // add node for each row
  $occ = $doc->createElement($table_id);
  $occ = $root->appendChild($occ);
  $occ->setAttribute('lat', $row['lat']);
  $occ->setAttribute('lng', $row['lng']);
  $occ->setAttribute('type', $row['type']);
  $occ->setAttribute('user_name', utf8_encode($row['user_name']));
  $occ->setAttribute('name', utf8_encode($row['name']));
  $occ->setAttribute('tweet', utf8_encode($row['tweet']));
  $occ->setAttribute('image', utf8_encode($row['image']));
} // while
$xml_string = $doc->saveXML();
$user_name2->response;
echo $xml_string;
?>

Bu yapmaya çalışıyor bir google harita mashup im ile kullanım içindir. Bana yardımcı olabilir çok teşekkürler. Benim soru yeterince açık değilse, söylemek ve senin için açıklığa kavuşturmak için çalışacağım lütfen. Ben bunu yapmak için sadece nispeten deneyimsiz değilim, bu basit bir düzeltme olduğunu eminim. İki gün boyunca bu olmuştu ve ben ne yazık ki zaman tükeniyor.

2 Cevap

İlk başta, size düz sorguya takıyor $ 'POST kaçmak gerekir:

'SELECT * FROM markers WHERE user_name = `' . mysql_real_escape_string($user_name) . '`';

Erik anlaşılacağı gibi, pencerenin en yararlı uyarılar dışarı atmak yok - büyük olasılıkla cevap sonra sağ önde çıkacaktır.

Ama ne hakkında oldukça emin değilim sizin mashup çalışır yoludur. Sadece tüm javascript atlayarak, php kendisi içindeki tüm şeyler yaparsanız bu çok daha kolay alabilir. Ayrıca OAuth geri çağrıları kontrol etmek isteyebilirsiniz - Eğer id ya da kullanıcı adı twitter vermelidir.

Yanlış bir şey var:

$result = mysql_query("SELECT * FROM markers WHERE user_name = '$user_name'");

Diğer SQL enjeksiyon için olgun olmak - bu çalışması gerekir. Sen veritabanı üzerinde doğrudan sorgu deneyin ve sonuçlar beklediğinizden olup olmadığını görmek isteyebilirsiniz.

Ben de gelişimi sırasında hata raporlama dönüm tavsiye ederim. Belgenizin üstüne aşağıdaki satırları ekleyin:

error_reporting(E_ALL);
ini_set("display_errors", 1);

ve birçok hataları ortaya çıkarmak yardımcı olacaktır.