Değişken olarak ele parola dizesi Dolar ($) işareti

6 Cevap php

Bir PHP / MySQL web uygulama veritabanına bağlanma sorunları olmamdı sayede bir sorun giderme biraz zaman geçirdim. Veritabanı aynı kimlik bilgileri ile kabuk ve phpMyAdmin erişilebilir olabilir ve mantıklı gelmiyordu.

Parola içinde bir $ işareti vardı çıkıyor:

$_DB["password"] = "mypas$word";

Gönderilen şifre yanlış olduğu ortada "mypas" idi.

Bu sorunu işlemek için en iyi yolu nedir? Ben \ ile $ kaçtı

$_DB["password"] = "mypas\$word";

ve işe yaradı.

Ben genelde $string = 'test' Ben önce bu içine çalışan kaçınılmalıdır ne kadar muhtemelen dizeleri için kullanın.

Bu doğru bir davranış mı? Bu şifre veritabanında saklanır ve PHP çıkardı ne varsa - bu aynı sorun ortaya istiyorsunuz? Ben burada ne eksik ...

6 Cevap

$_DB['password'] = 'mypas$word';

Tek tırnak dizeleri işlenir ve "olduğu gibi" alınır. Özellikle $ değişken gerekiyorsa veya dizileri (\ n, \ r, vb) değiştirmelerin kaçmak olmadıkça, her zaman tek tırnak dizeleri kullanmalısınız. Daha hızlı ve daha az hata eğilimli.

Çift tırnak ayrıldığını dize hazır normal bir davranış olarak PHP, değişken $word dizeye mypas$word interpolating edilir. $word muhtemelen tanımlanmamış olduğu için, sonuçta elde edilen dizgesi olan mypas.

Çözelti tek tırnak kullanmaktır. Tek tırnaklı dize hazır değişkeni enterpolasyonunu girmezler.

Sadece bir tek tırnaklı dize koydu:

$_DB['password'] = 'mypas$word';

Çift tırnaklı dize değişkenleri sokmak olacak, ancak tek tırnaklı dizeleri olmaz. Böylece sorununuzu çözecektir.

tek tırnak kullanmak

$_DB["password"] = 'mypas$word';

Sadece yerine "tek tırnak 'kullanmak ve bir değişken olarak $ sözcük denemek ve tedavi etmeyecektir.

$_DB['password'] = 'mypas$word';

Çift tırnak ile Strings tırnak değişkenler için yorumlanır. Tek tırnaklı dizeleri anlamıyla yorumlanır.

$a = "one";
$b = "$a";
echo $b . "\n";
$b = '$a';
echo $b . "\n";

Bu verim olmalıdır:

one
$a