ister bu php sözdizimi doğru mu?

6 Cevap php

hai guys, As i am a newbie i want to check a file path is an image or not

<? if(strpos($row['dfilepath'],'jpg') != false)
    {
      <img src=" <?= base_url().'/uploads/'.$row['dFilePath']?>" />
    } 
    else
    {
        <input type="button" onclick="loaddetails('<?php echo $row['dFilePath'];?>');" value="<?php echo $row['dFilePath'];?>">
    }
    ?> 

olsun benim durumum .. Benim hata veya doğru

Beklenmeyen '<'

6 Cevap

Sizin kodu yanlış. Bu $row dizisi geçerli olduğunu varsayarak çalışması gerekir.

<?php
    $ext = substr( $row[ 'dfilepath' ], strpos( $row[ 'dfilepath', '.' ) );
    if($ext == 'jpg')
    {
?>
      <img src="<?php echo base_url().'/uploads/'.$row['dFilePath']?>" />
<?php
    } 
    else
    {
?>
        <input type="button" onclick="loaddetails('<?php echo $row['dFilePath'];?>');" value="<?php echo $row['dFilePath'];?>">
<?php
   }
?> 

$row['dfilepath'] her yerde bunun içinde dize 'jpg' içeriyorsa, kontrol edecek, böylece gereklerini yerine getirmek değildir.

Bu görüntü eğer demek, o göstermek ya da daha sonra doğru olup indirme bağlantısını göstermektedir. Teşekkürler

Ben o yüzden sadece aksi takdirde "jpg.png" adlı bir dosya şu anda kodunuzu görüntü göstermek için çalışacağız neden olacaktır, dosya dizenin son üç karakter denetler yapmak istiyorum:

<?php 
$file = $row['dfilepath'];
$file_ending = substr($file, strlen($file) - 3);
if('jpg' == $file_ending) { ?>
<img src=" <?php echo base_url().'/uploads/'.$file?>" />
<?php } else { ?>
<input type="button" onclick="loaddetails('<?php echo $file;?>');" value="<?php echo $file?>">
<?php } ?> 

Bu uzantı kullanarak dosya türünü kontrol etmek için genellikle kötü bir alışkanlıktır. Ben kolay bir metin dosyası oluşturun ve bunu adlandırabilirsiniz. Jpg bu koda göre, aniden gerçek bir görüntü olacaktı. Hatta daha da kötü: Ben aslında bazı kod yürüten bir sahte jpg oluşturarak webbrowsers bazı exploit olabilir.

Bunun yanı sıra, benim jpeg dosyalarını JPEG, JPG, JPG, JPEG veya aklınıza gelebilecek herhangi başka bir kombinasyon adlandırabilirsiniz. Sonra jpeg başka formatlar da var. Ben kod kalanını bilmiyorum, ama belki birisi png veya gif görüntüleri yükleyerek izin vermek istiyorum.

Eğer biraz daha fazla aslında bir resim dosyası olduğundan emin olmak istiyorsanız, kontrol etmek için daha emin bir yol getimagesize kullanıyor. Bu olsa GD uzantısı gerektirir. Bu işlev, gerçek bir görüntü olarak bu dosyayı kullanarak bir sürü daha güvenli konum olması muhtemel görünüyor çıkışı sağlar eğer. Eğer bakım ve sadece bir dosyanın uzantısı kontrol etmek istemiyorum emin durumlar vardır. Ama bu kod biraz kamu almak gerekiyordu bir duygu olsun. Küçük bir örnek:

<?php
$file = $row['dfilepath'];
// where upload_dir is a function that somehow finds 
// the absolute path of the upload dir
$path = upload_dir() . DIRECTORY_SEPARATOR . $file;

$valid = array('image/jpeg', 'image/gif', 'image/png');

$info = getimagesize($path);
if($info !== false && in_array($info['mime'], $valid) {
    // more likely you'll actually have an image here
    // now you might want to print some html here, like:
    ?><img src="/uploads/<?php print $file; ?>" alt="" /><?php
}

?>
if(strpos($row['dfilepath'],'jpg') != false)

'Jpg' arandı dize başında meydana olursa bu, bir küçük yakaladım olduğunu. strpos düzgün vurmak için 0 dönecektir, ancak 0 standart bir eşitlik testinde yanlış değerlendirilirse. Sen (yanlış! = False) ile bitireceğiz.

Eğer sadece bir alt dizenin varlığını sınamak için strpos kullanıyorsanız, size sıkı === kullanmak zorunda ve! == Yanı sıra değerleri ancak türlerini karşılaştırmak değil sadece operatörleri (= ekstra not), burada 0! == false true olarak değerlendirmek olacaktır. Tamsayı 0 0'a aynı değere sahip olsa bile, sahte boolean kesinlikle eşit değildir.