دوشنبه ۰۷ خرداد ۱۴۰۳

Monday, May 27, 2024 GMT +3:30

نحوه نمایش متن و تصاویر اتفاقی در PHP و MySQL

php-random

نمایش متن و تصاویر اتفاقی یکی از روش هایی است که در سیستم های مدیریت محتوای سایت، وبلاگ و ابزارهای وب مورد استفاده قرار می گیرد، به طور مثال می توانیم یک تصویر را به طور اتفاقی از بین چندین فایل انتخاب کرده و با هر بار رفرش شدن صفحه آن را به نمایش در آوریم یا تیتر چند مطلب را از دیتابیس به طور رندوم انتخاب کرده و تحت عنوان مطالب اتفاقی به بازدیدکنندگان نمایش دهیم، انجام این موارد در وب به طور معمول یا با کدنویسی جاوا اسکریپت در سمت کاربر و یا با برنامه نویسی PHP و MySQL در سمت سرور و به کمک توابع از پیش تعریف شده و ویژگی های آنها ممکن می شود که در این مطلب در خصوص نحوه نمایش متن و تصاویر اتفاقی در PHP و MySQL خواهیم گفت و بحث در مورد جاوا اسکریپت را به بخش آموزش کاربردی آن موکول می کنیم.

نحوه نمایش متن و تصاویر اتفاقی در PHP (روش ساده)


یکی از توابع پرکاربرد و به اصطلاح دم دستی که می توانیم در PHP از آن برای چاپ مطالب اتفاقی استفاده کنیم، تابع rand است که ترکیب آن را با switch و case در نمونه کد زیر ملاحظه می کنید، از این نمونه کد می توانیم برای نمایش محتوای تصادفی و رندم استفاده کنیم که خروجی آن می تواند متن یا کدهای HTML شامل تگ img برای نمایش تصاویر باشد، این روش شاید ساده ترین راه حل ممکن برای ایجاد و گرفتن خروجی تصادفی باشد.
<?php
//ایجاد اتفاقی یک شماره از 1 تا 6
$number = rand(1, 6);

//با توجه به شماره ایجاد شده، یک مورد به صورت اتفاقی نمایش داده می شود
switch ($number){
    case 1:
    echo "متن یا تصویر شماره 1";
    break;
    case 2:
    echo "متن یا تصویر شماره 2";
    break;
    case 3:
    echo "متن یا تصویر شماره 3";
    break;
    case 4:
    echo "متن یا تصویر شماره 4";
    break;
    case 5:
    echo "متن یا تصویر شماره 5";
    break;
    case 6:
    echo "متن یا تصویر شماره 6";
    break;
    default:
    echo "متن یا تصویر شماره 1";
}
?>
توضیح:
- تابع rand با توجه به آرگیومنت های تنظیم شده با هر بار فراخوانی فایل PHP و اجرای کدها، عددی بین 1 تا 6 را به صورت اتفاقی ایجاد کرده و به متغیر number نسبت می دهد.
- در قسمت switch با توجه به مقدار متغیر number یکی از case ها انتخاب شده و خروجی آن اجرا می شود و نهایتا کد با break خاتمه می یابد.
نکته: خروجی دستورات PHP می تواند شامل تگ های HTML و از جمله تگ img باشد، مثال:
case 1:
echo '<img src="images/photo.png" alt="photo" width="200" height="200">';
break;
یا
switch ($number){
case 1:
$photo = 'images/photo.png';
break;
}
echo '<img src="' . $photo . '" alt="photo" width="200" height="200">';
هر دو روش بالا خروجی یکسان خواهند داشت و تفاوت در نحوه مقداردهی متغیر و استفاده از دستور echo است که با توجه به ساختار برنامه می توانیم یک شیوه را ترجیح دهیم.

نحوه نمایش متن و تصاویر اتفاقی در PHP (روش پیشرفته)


در برنامه نویسی وب ممکن است نیاز باشد که در یک بار فراخوانی صفحه چند آیتم اتفاقی به صورت هم زمان از بین داده های موجود به خروجی ارسال شوند، قاعدتا در چنین شرایطی صرف استفاده از تابع rand حلال مشکل نیست و باید در پی راه حل و کدنویسی پیچیده تر و پیشرفته تری باشیم، شیوه ای که در این آموزش به آن می پردازیم ترکیب تابع rand با قابلیت های دیگر PHP از جمله آرایه و حلقه است که در نمونه کد زیر ملاحظه می کنید.
<?php
//متن یا تصویر در آرایه
$array_text = array(
0 => "متن یا تصویر شماره 1",
1 => "متن یا تصویر شماره 2",
2 => "متن یا تصویر شماره 3",
3 => "متن یا تصویر شماره 4",
4 => "متن یا تصویر شماره 5",
5 => "متن یا تصویر شماره 6",
);

$array_loop = array();
$item = 3;
$result = null;

//با توجه به تعداد آیتم تعیین شده، چند مورد به صورت اتفاقی و بدون تکرار از آرایه انتخاب شده و به خروجی ارسال می شوند
for($i = 0; $i < $item; $i++){
    //ایجاد اتفاقی یک شماره از 1 تا 6 بدون تکرار
    do {
        $number = rand(1, 6);
    } while(in_array($number, $array_loop));

    $result .= $array_text[$number - 1] . '<br>';
    
    $array_loop[] = $number;
}

echo $result;
?>
پیش نمایش
توضیح:
- متن ها یا تصاویر مورد نظر را در آرایه array_text به صورت کلیدهای شماره ای از 0 درج می کنیم، تعداد کلیدهای آرایه باید با آرگیومنت دوم تابع rand برابر باشد (در اینجا مقدار 6).
- آرایه array_loop برای نگهداری مواردی است که در حلقه for به صورت تصادفی انتخاب شده اند و نباید مجددا انتخاب شوند (جهت عدم نمایش آیتم های تکراری).
- متغیر item تعداد آیتم هایی که باید در خروجی به صورت اتفاقی چاپ شوند را تنظیم می کند، قاعدتا این مقدار نباید از حداکثر تعداد کلیدهای آرایه array_text بیشتر باشد.
- حلقه do و while به کمک تابع in_array صرفا اعدادی را به صورت اتفاقی به متغیر number نسبت می دهد که قبلا در آرایه array_loop موجود نباشند (جهت عدم نمایش آیتم های تکراری).

پرس و جوی نمایش متن و تصاویر اتفاقی در MySQL


علاوه بر روش ها و نمونه کدهایی که بررسی کردیم، می توانیم از قابلیت های سیستم مدیریت پایگاه داده MySQL نیز در برنامه نویسی PHP استفاده کنیم، به این صورت نتایج پرس و جو قبل از اینکه از دیتابیس به PHP ارسال شوند از ابتدا به صورت تصادفی انتخاب می شوند که این کار با توابع MySQL امکانپذیر است، برای این منظور از تابع RAND در پرس و جو استفاده کرده و با افزودن پارامتر LIMIT به دستورمان، نتایج را به تعداد مشخصی محدود می کنیم، پرس و جوی زیر نمونه ای از کاربرد تابع RAND است.
SELECT * FROM tbl_name WHERE col_name > 1 ORDER BY RAND() LIMIT 5
توضیح:
- تابع RAND با توجه به مقدار LIMIT (که در پرس و جوی بالا 5 است)، همان تعداد از ردیف ها را به صورت تصادفی از دیتابیس انتخاب می کند.
- ORDER BY RAND نحوه انتخاب و چینش ردیف ها از دیتابیس را تعریف می کند که به جای RAND می توانیم از ASC و DESC (Ascending و Descending یا چینش صعودی و نزولی) استفاده کنیم.
- از این روش می توانیم برای نمایش مطالب اتفاقی در سایت ها یا وبلاگ هایی که روی سرور شخصی قرار داشته و از دیتابیس MySQL استفاده می کنند، به راحتی بهره ببریم.
دسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
آموزش ساخت نقشه XML سایت (Sitemap) با PHP و MySQL
ساخت منوی هوشمند با PHP و CSS
محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess
نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
ارسال پارامتر به URL و دریافت مقادیر با PHP
دیدگاه
more ۴۸ دیدگاه برای این مطلب ارسال شده است.
more دیدگاه جدید بر اساس تاریخ ارسال در انتهای دیدگاه های موجود نمایش داده می شود.
maryam
۱۸:۰۰ ۱۳۹۸/۰۷/۲۰
بخاطر کمکتون ممنون درست شد برنامه با راهنمایی شما
میثم
۱۶:۴۸ ۱۳۹۹/۰۱/۲۱
سلام استاد عزیز.
من بر اساس ۵.۴ php و mysql کار کردم.
حالا چند تا از جداول سایتم رکوردهای زیادی دارن.
فرضا
جدول ۱ با ۱۰.۰۰۰ رکورد و ۱۲ ستون اطلاعات
جدول ۲ با ۶.۰۰۰ رکورد و ۱۵ ستون اطلاعات
جدول ۳ با ۸.۰۰۰ رکورد و ۲۰ ستون اطلاعات
جدول ۴ با ۴.۰۰۰ رکورد و ۶ ستون اطلاعات
جدول ۵ با ۱۲.۰۰۰ رکورد و ۸ ستون اطلاعات.
حالا توی یکی از صفحات سایتم من به هر ۵ جدول نیاز دارم و تقریبا به تمام ستون ها در جدول ها نیاز هست. حالا با این اوصاف از دستور زیر برای فراخوانی فلان رکورد در جدول ها استفاده می کنم.
$X = mysql_fetch_array(mysql_query("Select * From `tableA` Where `id` = '$user[id]'"));
آیا راه بهتری برای اینکه سرعت عملکرد و فراخوانی اطلاعات بیشتر بشه سراغ دارین؟ بازم میگم که من توی فراخوانی به تمام ستون های هر جدول نیاز دارم.
دقیقا نمی دانیم که ساختار جداول به چه نحوی به هم مرتبط هستند، به فرض آیا Foreign Key برای جداول تعریف شده یا خیر، اما در مجموع چند راه حل برای افزایش سرعت اجرای پرس و جوها در دیتابیس وجود دارد:
- بهتر است هر ستونی از جداول که در پرس و جوها در قسمت WHERE کاربرد دارند ایندکس گذاری شوند، مثال:
ALTER TABLE tbl_name ADD INDEX `index_name` (`column_name`)
ایندکس گذاری (Indexing) یک نوع مرتب سازی نتایج به فرض بر اساس حروف الفبا، اعداد و... است که می تواند پس از ساخت جدول با دستور بالا انجام شود، با این کار پیدا کردن نتیجه از جداول دارای ردیف های زیاد با سرعت خیلی بالاتری انجام می شود.
- استفاده از پرس و جوی ترکیبی به فرض دستور JOIN می تواند در افزایش راندمان کار موثر باشد (البته اثر این ترکیب شاید در حد خیلی مختصر باشد اما در مجموع برای دیتابیس های خیلی حجیم بهینه تر است).
- استفاده از دستور LIMIT و محدود کردن تعداد نتایج انتخابی مد نظر هم همواره باید مد نظر باشد.
مرتضی ق
۱۸:۲۵ ۱۳۹۹/۰۳/۰۲
سلام خسته نباشید. یک سایت اصلی و مادر دارم مثلا www.m.com حالا سه سایت دیگر زیر مجموعه مثلا m1 و m2 و m3 من میخواهم کسی که وارد سایت اصلی و مادر میشه بطور خودکار و کاملا تصادفی فقط به یکی از سایتهای زیرمجموعه مثلا m2 وارد بشه و نفر به m1 وارد بشه. لطفا اگر راه حل و یا کد داره ایمیل کنید.
باتشکر
می توانید در ریشه سایت اصلی یک فایل با نام index.php داشته باشید و نمونه کدهای زیر را در آن درج کنید:
<?php
$num = rand (1, 3);
switch($num){
case 1:
$site = 'http://example1.com';
break;
case 2:
$site = 'http://example2.com';
break;
case 3:
$site = 'http://example3.com';
break;
}
header('Location: ' . $site);
exit;
?>
البته در این حالت همه چیز تصادفی است و ممکن است دو کاربر پشت سر هم وارد یک سایت شوند، برای اینکه کاربر بعدی به سایتی غیر تکراری با کاربر قبلی برود باید آخرین شماره در دیتابیس ثبت و شماره تصادفی فعلی با آن تطبیق داده شود، اگر شماره تصادفی با مقادیر آخرین شماره در دیتابیس برابر بود یک بار دیگر شماره تصادفی اجرا تا اینکه شماره اتفاقی غیر تکراری باشد (نیاز به کدنویسی زمانبر دارد).
۱۵:۰۳ ۱۳۹۹/۰۴/۱۳
با سلام و خسته نباشید
طبق کد زیر
$query = mysql_query('SELECT blogs FROM table WHERE id > 0 ORDER BY RAND() LIMIT 5')
or die(mysql_error());
while($row = mysql_fetch_array($query)){
echo $row['text'];
}
از دیتابیس mysql استفاده شده اما من از لایبرری PDO استفاده میکنم که موقع
($row = mysqli_fetch_array($Pdc))
استفاده میگه متغیر Pdc برای PDO است لطفا نمونه کد برای لایبرری PDO قرار دهید
یا فرض اینکه Pdc لینک اتصال به دیتابیس باشد می توانید از الگوی نمونه کد زیر برای اکستنشن PDO استفاده کنید:
$query = $Pdc->prepare("SELECT text FROM blogs WHERE id > 0 ORDER BY RAND() LIMIT 5");
$query->execute();
$query = $query->get_result();
while($row = $query->fetch_assoc()){
echo $row['text'];
}
Amir Rahimi
۱۹:۱۱ ۱۳۹۹/۰۵/۱۸
سلام و خسته نباشید
من یک سوالی داشتم که مربوط به این بحث نیست
سوال من اینه که یه کد یا . . . میخوام که بتونم متن یا عدد روی عکس رو بتونم با php استخراج کنم
ممنون میشم کمکم کنید و پاسخ دهید 🙏
برای این منظور باید از OCR (مخفف Optical Character Recognition) استفاده کنید که اسکریپت هایی برای آن به زبان PHP نوشته شده:
https://sourceforge.net/projects/phpocr/

https://github.com/thiagoalessio/tesseract-ocr-for-php
قاعدتا برای استفاده بهینه و سفارشی سازی این اسکریپت ها باید با PHP آشنا باشید.
سروش
۰۹:۵۰ ۱۳۹۹/۰۶/۲۳
سلام . من اطلاعات را از دیتابیس دریافت میکنم و در جدول میبینم . میخوام مثلا 6 مورد آخر را در یک ردیف ببینم و هر مورد بعد از 10 ثانیه تغییر کنه . این کار را به چه صورت میشه انجام داد .
منظورتان از "هر مورد بعد از 10 ثانیه تغییر کنه" دقیقا مشخص نیست؟! اگر می خواهید اطلاعات ردیف ها علاوه بر جابجایی با آخرین داده های دیتابیس به روز شوند باید از Ajax استفاده و مجدد درخواست به سرور ارسال کنید، پاسخ سرور باید شامل آخرین ردیف ها باشد منتها در سمت کاربر با جاوا اسکریپت چینش را به صورت تصادفی هر 10 ثانیه تغییر می دهیم، مثال:
فایل response.php
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
//نام جدول
$tbl_name = "tblname";

//استخراج آخرین ردیف ها
$query = mysqli_query($conn, "SELECT * FROM $tbl_name WHERE id >= 1 ORDER BY id DESC LIMIT 6");
if(!$query){
echo "Selecting From Table $tbl_name: Error! " . mysqli_error($conn) . '<br>';
} else{
$result = null;
$loop = 1;
while($row = mysqli_fetch_array($query)){
$result .= $loop . ':' . $row['name'];

if($loop < 6){
$result .= '|';
}

$loop++;
}

echo $result;
}
}
//پایان اتصال
mysqli_close($conn);
?>
اطلاعات از یک نمونه جدول (در اینجا با نام فرضی tblname) با دو ستون id و name دریافت می شود، خروجی نهایی باید به شکل نمونه زیر باشد:
1:value_1|2:value_2|3:value_3
فایل index.html
<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | نمایش اتفاقی نتایج دیتابیس با PHP و JavaScript</title>
<!-- Webgoo.ir -->
<style>
body{
font-family:Tahoma, Geneva, sans-serif;
font-size:12px;
direction:rtl;
}
#result div{
direction:ltr;
border:1px solid #e5e5e5;
}
</style>
<script>
function shuffleArray(array) {
for(var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}

function ajaxRequest(id) {
var xmlHttp;
var respons, array, sub_array;
var result = '';

try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("متاسفانه مرورگر شما از ای جکس پشتیبانی نمی کند");
return false;
}
}
}

xmlHttp.onreadystatechange = function () {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
respons = xmlHttp.responseText;
array = respons.split('|');

shuffleArray(array);

for(var i = 0; i < array.length; i++){
sub_array = array[i].split(':');
result += '<div id="' + i + '">' + sub_array[0] + ' => ' + sub_array[1] + '</div>';
}

document.getElementById(id).innerHTML = result;

} else {
document.getElementById(id).innerHTML = 'لطفا چند لحظه صبر کنید...';
}
}

xmlHttp.open("GET", "response.php", true);
xmlHttp.send(null);
}

function changeResult(id) {
var array = new Array();
var elms = document.getElementById(id).getElementsByTagName("div");
var result = '';

for(var i = 0; i < elms.length; i++) {
array[i] = '<div id="' + i + '">' + elms[i].innerHTML + '</div>';;
}

shuffleArray(array);

for(var i = 0; i < array.length; i++){
result += array[i];
}

document.getElementById(id).innerHTML = result;
}

var interval;
function activeChangeResult(){
interval = window.setInterval(changeResult, 10000, 'result');
alert('فعال شد، چند ثانیه صبر کنید');
}

function deactiveChangeResult(){
clearInterval(interval);
alert('غیرفعال شد');
}
</script>
</head>
<body>
<noscript>جاوا اسکریپت در مرورگر شما پشتیبانی نمی شود یا غیرفعال است!</noscript>
<button id="button-1" type="button" onclick="ajaxRequest('result')">1- ارسال درخواست ای جکس</button>
<button id="button-2" type="button" onclick="changeResult('result')">2- تغییر چینش ردیف ها</button>
<button id="button-3" type="button" onclick="activeChangeResult()">3- فعال سازی تغییر خودکار چینش بعد از 10 ثانیه</button>
<button id="button-4" type="button" onclick="deactiveChangeResult()">4- غیرفعال سازی تغییر خودکار چینش</button>
<div id="result"></div>
</body>
</html>
اگر به روزرسانی اطلاعات با آخرین دیتای ذخیره شده در دیتابیس اهمیت ندارد و صرفا جابجایی ردیف ها مهم است، صرف استفاده از قسمت جاوا اسکریپت کافی است.
ابوالفضل
۱۷:۳۳ ۱۳۹۹/۱۲/۰۵
سلام من ۱۰ تصویر زمینه دارم میخام با هر بار رفرش به صورت رندوم عوض بشه ولی بجای پی اچ پی با جاوا اسکریپت باشه. اگه نمیشه یا خیلی زمانبر هست، با هر بار کلیک روی یک دکمه عوض بشه (که اون دکمه کار دیگه ای هم می‌کنه مثلاً رفتن به یه لینک داخلی در html).
برای ایجاد تصاویر زمینه اتفاقی با هر بار رفرش صفحه می توانید از نمونه کد زیر استفاده کنید:
<style>
#bg-block{
height: 100px;
width: 200px;
border: 1px solid #E5E5E5;
}
</style>
<div id="bg-block"></div>
<script>
var max = 10;
var number = Math.floor(Math.random() * Math.floor(max)) + 1;

window.onload = function(){
document.getElementById('bg-block').style.backgroundImage = 'url(http://example.com/image/' + number + '.png)';
}
</script>
در این کد تصاویر با فرمت png از شماره 1 تا 10 در آدرس فرضی
http://example.com/image
قرار دارند که باید با آدرس سایت خودتان جایگزین کنید، همچنین در اینجا تصاویر زمینه بلاک div با آی دی bg-block تغییر می کند که در صورت نیاز باید متناسب با بلاک مورد نظرتان آن را ویرایش کنید، در صورتی که می خواهید تصویر زمینه تگ body تغییر کند به جای متد
document.getElementById('bg-block').style.backgroundImage
از متد
document.body.style.backgroundImage
استفاده کنید.
نکته: این کد هوشمند نیست یعنی احتمال وجود اعداد تکراری در هر بار رفرش و در نتیجه پس زمینه تکراری وجود دارد، برای هوشمندسازی نیاز به توسعه بیشتر با کوکی است که زمانبر می باشد.
مجید
۲۲:۰۹ ۱۴۰۰/۰۴/۱۰
سلام. من برنامه ای دارم که بر اساس php و mysql کار میکنه. بهش 100 جمله میدم و جملات رو تصادفی نمایش میده. حالا میخام فقط مثلا از جمله 30 به بعد رو تصادفی نمایش بده و 30 تای اول رو دست نخورده و با همون ترتیب اولیه نمایش بده. راهنمایی میفرمایید؟ ممنون میشم.
بدون دیدن و بررسی سورس کدهای برنامه نمی توان نظر خاصی داد، بستگی دارد مرحله ایجاد نتیجه تصادفی در کدام قسمت اجرا شود به فرض اگر در پرس و جوی MySQL باشد راه حل متفاوتی دارد تا اینکه پس از دریافت نتیجه به طور مثال در حلقه باشد، در صورت تمایل یک نمونه کد از سورس های بخش ایجاد نتیجه برنامه را درج یا به آدرس ایمیل ما (موجود در بخش تماس) ارسال کنید تا بررسی کنیم.
محمدرضا
۱۰:۲۱ ۱۴۰۱/۰۳/۰۱
با سلام و خسته نباشید
ببخشید این لینک رو نگاه کنید:
https://devbeta.finnotech.ir/card-information.html?sandbox=undefined
چطور میشه با استفاده از توضیحات گفته شده اطلاعات یک کارت رو پیدا کرد:
مثلا کارت مشتری بهش بدی و مشخصاتش رو با استفاده از توضیحات گفته شده پیدا کرد.
ممنون میشم کمک کنید چون تعدادی از مبالغ خرید رو مجبور هستیم برگشت بزنیم و لازمه حتما به حساب پرداخت کننده باشه، یعنی با کارتی که پرداخت انجام شده و از برگشت دادن به حسابهای دیگه جلوگیری بشه
با تشکر از لطف و محبت شما
متاسفانه راهنمایی در این خصوص ساده و کوتاه نیست و باید بر برنامه نویسی سمت سرور (PHP یا هر زبان دیگری) مسلط باشیم، ظاهرا توضیحات مربوط به یک سرویس API است، برای ارتباط با این API طبق توضیحات گفته شده در آدرس درخواستی از سرور یک سری پارامترها را آماده و ارسال می کنیم، پارامترها به صورت سربرگ HTTP و همچنین متد POST و GET ارسال می شوند و در نهایت پاسخ در قالب آبجکت JSON قابل دریافت و تجزیه است.
برای تنظیم اطلاعات لازم باید ساز و کار برنامه مدیریت محتوا (CMS) شما دقیق بررسی و مشخص شود اطلاعاتی مانند clientId، card، trackId، Token و... مربوط به هر کاربر از چه قسمت هایی استخراج می شوند، در نهایت می توانیم با توابعی مانند CURL درخواست را ارسال و نتیجه را با json_decode به آرایه تجزیه کنیم.
محمدرضا
۲۲:۴۹ ۱۴۰۱/۰۳/۰۱
خیلی ممنون که جواب دادید
یه سوال دیگه هم داشتم البته شرمنده چطور می شه وقتی کاربری فرمی رو توی سایت پر می کنه اطلاعات mac سیستمش ثبت بشه الان توی سایتم مشخصات مرورگر و آی پی رو ثبت می کنه ولی واسه ثبت مک چیزی پیدا نکردم
کدی چیزی نداره ازش استفاده کنم؟
توی اپلیکیشن ها دیدم اینکارو می کنن و مک رو مسدود می کنن وقتی آی پی مسدود میشه کاربر می تونه با یه آی پی دیگه وارد بشه ولی وقتی مک رو فیلتر می کنن اون کاربر نمی تونه دیگه با اون سیستم وارد بشه راهی هست بشه اینکارو انجام داد و مک کاربر هم ثبت بشه؟
با تشکر
تا جایی که اطلاع داریم خیر، راهی برای ثبت اطلاعات MAC از طریق مرورگر کاربران وجود ندارد چون این مورد به بحث امنیت و حریم خصوصی مربوط می شود و مرورگرها مجاز به در اختیار قرار دادن این اطلاعات با سرورها نیستند، با اپلیکیشن ممکن است چون کاربر شخصا برنامه را در گوشی نصب می کند و به نوعی مجوز داده می شود، در وب باید از سیستم IP، کوکی یا اطلاعات واسط کاربری استفاده کرد اما به اندازه ساز و کار MAC قابل اعتماد نیست که البته این به ذات وب برمی گردد.
امیرحسین
۰۸:۳۸ ۱۴۰۲/۰۴/۱۶
با سلام و درود
ببخشید یه سوال دیگه هم دارم من این کد رو دارم که متن منو توی گوگل سرچ می کنه و متوجه میشم متن من توی گوگل هست یا نه! میخوام در صورتی که متن من وجود داشت عدد ۱ و در صورتی که وجود نداشت عدد صفر رو برگردونه!
<?php
function googleSearch($url) {
$ch = curl_init();

curl_setopt($ch, CURLOPT_HEADER, 0);
//Set curl to return the data instead of printing it to the browser
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);

$data = curl_exec($ch);
curl_close($ch);

return $data;
}

$query = $item->id;
$url = 'http://www.google.co.in/search?q='.urlencode($query).'';
$Link = googleSearch($url);
?>
با تشکر
برای بررسی پاسخ گوگل می توانیم از روش زیر استفاده کنیم:
$query = "AhWMu5UCHYnv";
$url = 'http://www.google.co.in/search?q='.urlencode($query).'';
$Link = googleSearch($url);
//echo $Link;
if(preg_match('/<span([^>]*)>([^<]*)did not match any documents([^<]*)<\/span>/i', $Link)) {
echo 0;
} else {
echo 1;
}
این روش در شرایطی دقیق نیست و در صورتی عمل می کند که گوگل خروجی فعلی خود را تغییر ندهد، در حال حاضر اگر یک جستجو نتیجه ای نداشته باشد عبارت "did not match any documents" در خروجی گوگل در تگ span قابل دریافت است:
Your search - AhWMu5UCHYnv - did not match any documents.
Suggestions:
Make sure all words are spelled correctly.
Try different keywords.
Try more general keywords.
اگر متن خروجی گوگل تغییر کند یا به هر دلیل عبارت "did not match any documents" در خروجی در تگ span باشد کد به اشتباه ممکن است 0 برگرداند (در حال حاضر خروجی ردیف های نتایج گوگل در تگ span نیست و تداخلی ایجاد نمی شود).
امیرحسین
۱۳:۳۴ ۱۴۰۲/۰۴/۱۶
با سلام و تشکر از شما
دست شما درد نکنه هر دو مورد که جواب دادید عالی بودن مورد دوم واسه جستجوی گوگل هم بله درسته من واسه سرچ محتواش از ایدی های یکتای مطالب استفاده می کنم که با سایتهای دیگه مشترک نیستند و وقتی دستی سرچ می کنم اگه مطالب ایندکس شده باشند صفحه جستجو رو میاره، و اگه ایندکس نشده باشه
 did not match any documents.
رو میاره الان امتحان کردم روش شما کار کرد واسه یه مطلب که تکی اینکارو انجام میده سرعت لود صفحه رو زیاد پایین نمیاره ولی واسه ۲۰ تا مطلب یه مقدار زمان برای بررسی بیشتر میشه و تمام نتایج رو هم صحیح برمی گردونه
بازم از لطف و محبت شما خیلی ممنون و سپاسگزارم.
زنده بمانید به سلامتی و خوشبختی و شادی
خواهش، خوشحالیم که پاسخ ها کارآمد بودند، متقابلا آرزوی سلامتی و دلخوشی داریم.
مهراد
۰۹:۵۹ ۱۴۰۲/۰۸/۱۷
سلام
در جدول موقعی که عکس رو با php فراخوانی میکنم نمیاره تصویر عکس.
لطفا راهنمایی کنید.
foreach (showproduct() as $value){
?>
<tr>
<td><img src="/images/" style="width:200px;height:200px"<?php echo $value['propicture']?>></td>
ظاهرا در نمونه کد بالا قسمت src به درستی تنظیم نشده است، آدرس قسمت src باید به فایل تصویر با پسوندهای رایج مثل jpg، png و... ختم شود اما در مثال شما صرفا آدرس دایرکتوری images دیده می شود، برای بررسی بیشتر لطفا خروجی HTML این قسمت از سایت را درج کنید، ممکن است پارامتر
$value['propicture']
همان نام و آدرس فایل باشد و قسمت src به صورت زیر تکمیل شود:
src="/images/<?php echo $value['propicture']?>"
برای خطایابی بیشتر می توانید دستور زیر را در کدهای PHP (قبل از foreach) اجرا کنید:
print_r(showproduct());
آیدین
۱۱:۵۷ ۱۴۰۲/۱۰/۰۵
سلام خسته نباشید
من با زبان php و با تابع for خواستم عکس هایی رو که مشخص کردم رو بارگذاری کنم ولی هر کاری میکنم عکس رو بالا نمیاره میشه کمکم کنید
لطفا یک نمونه کد قابل تست درج کنید یا کدها را در سایتتان قرار داده و آدرس صفحه را جهت بررسی بیشتر و رفع خطاها ارسال نمائید، همچنین در صورتی که تعداد یا حجم فایل های پروژه زیاد است می توانید فایل ها را با فرمت zip فشرده کرده و به آدرس ایمیل ما (موجود در بخش تماس) ارسال و پاسخ را از همان طریق پیگیری نمائید.
سعید
۰۶:۲۵ ۱۴۰۲/۱۲/۰۱
با سلام و خسته نباشید
من یه تابع با php میخوام که لینک های موجود در یک متن رو برام شناسایی کنه بعد به جای لینکها به کاربر نشون داده بشه که چون ثبت نام نکرده لینک ها بهش نشون داده نمیشه فروم ها این امکان رو دارن
با تشکر
با نمونه کد زیر می توانید لینک های داخل محتوای سایت را مخفی و محدود کنید:
<?php
$source = 'this is a test <a href="#">link</a>, this is a test text!';
$source = preg_replace('/<\/?a[^>]*>([^<]*)<\/a>/i', '[You must be logged in to see this URL!]', $source);
echo $source;
?>
منتها این نمونه کد صرفا ساختار اولیه است و برای اینکه به شکل یک افزونه قابل استفاده در سیستم های مدیریت محتوا باشد نیاز به توسعه بیشتر و ترکیب با قابلیت هایی مانند تشخیص کاربران ثبت نام و وارد شده به سایت دارد، همچنین باید با استایل CSS ظاهر کار را سفارشی سازی کنید.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
5 × 8
20 × 20
=
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.
پرتو
سلام خوبید؟ بلاکفا باز دچار مشکل شده یا فقط برای من دچار مشکل شده؟ منظورم اینکه خیلی دیر باز میشه و فقط برای فایرفاکس هم...
۱۴۰۳/۰۳/۰۱

سعیدی
سلام می تونید اینو اصلاح کنید؟ چون من با توضیحات شما یاد نگرفتم خیلی ممنون اگه یکبار اصلاح کنید واسه بعد یاد...
۱۴۰۳/۰۲/۲۲

سعیدی
دست شما درد نکنه وقتی اینطوری تغییر میدم و به class می نویسم کار نمی کنه و ارور میده
۱۴۰۳/۰۲/۲۱

سعیدی
دست شما درد نکنه خیلی خوب بود این یکی رو چطوری فراخوانی کنم؟ این واسه مناسبت هاست خیلی ممنون
۱۴۰۳/۰۲/۱۹

سعیدی
با سلام آیا می شه این تابع رو بصورت class نوشت؟ میخوام وقتی کد ملی میدم با این تابع فراخوانی بشه و شهر...
۱۴۰۳/۰۲/۱۹

پرتو
مگه شما دارین اموزشش رو؟ آدرسش رو میزارید؟ یا اگر سایتی رو میشناسید که آموزش داده باشه معرفی کنید ممنون میشم من خیلی گشتم توی...
۱۴۰۳/۰۲/۱۸

پــرتو
سلام خوبید ؟ خسته نباشید گوشی پدرم شیاومی هست ایمیلمو ثبت کردم داخلش بعد می خواستم حذفش کنم نمیشد می گفت همه داده های توی...
۱۴۰۳/۰۲/۱۶

vip
خیلی ممنونم از شما خیلی عالی شد میشه مثل تبلیغ بلاگفا باشه یعنی زیر صفحه نمایش داده بشه و صفحه رو سیاه نکنه که تا...
۱۴۰۳/۰۲/۰۵

vip
با سلام و خسته نباشید استاد چند وقت پیش این کد رو از شما گرفتم این کد خیلی خوبه و کاربر رو هم...
۱۴۰۳/۰۲/۰۴

پـــرتو
سلام خسته نباشید شرمنده مزاحم میشم یه سوال داشتم می خواستم بپرسم که چرا بلاگفا باز نمیشه برام؟ کلا هر وبلاگی که مربوط به بلاگفا...
۱۴۰۳/۰۲/۰۲

هادی عبداله زاده
با تشکر از شما دوست عزیز با order_id درستش کردم موقع برگشت order_id رو بر می گردونه اینطوری کردم که از طریق اون شناسه...
۱۴۰۳/۰۱/۲۲

هادی عبداله زاده
با تشکر از شما برای ارسال درخواست درست بود و به بانک هم وصل شد فقط برای وریفای چیکارش کنم؟
۱۴۰۳/۰۱/۲۲

هادی عبداله زاده
با سلام و خسته نباشید سال نو شما مبارک من یه کد واسه انتقال به درگاه دارم واسه زرین پال هست ...
۱۴۰۳/۰۱/۲۰

پـــرتو
ببخشید ممنون از جوابتون ولی یه سوال اگر بخوام همون شماره رو با حساب کاربری جدید با همون شماره رو داشته باشم داده های قبلی...
۱۴۰۳/۰۱/۱۹

حسین بلاگ
من یه صفحه ارسال متن دارم میخوام کاربرها وقتی واسه م پیام میدن وقتی روی اون دکمه کلیک می کنن بهشون بگه لطفا صبر...
۱۴۰۳/۰۱/۱۹

شریفی
سلام و عرض احترام سال نو رو بهتون تبریک میگم انشالله سال خوبی داشته باشین یه سرویس وبلاگدهی داریم که قصد داریم به...
۱۴۰۳/۰۱/۱۵

فرهادی
سلام ببخشید یه مشکل دارم این صفحه رو نگاه کنید چند بار توی سورس تکرار شده نمی تونم الگوی توضیحاتش رو استخراج...
۱۴۰۳/۰۱/۱۰
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.