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

نمایش متن و تصاویر اتفاقی یکی از روش هایی است که در سیستم های مدیریت محتوای سایت، وبلاگ و ابزارهای وب مورد استفاده قرار می گیرد، به طور مثال می توانیم یک تصویر را به طور اتفاقی از بین چندین فایل انتخاب کرده و با هر بار رفرش شدن صفحه آن را به نمایش در آوریم یا تیتر چند مطلب را از دیتابیس به طور رندوم انتخاب کرده و تحت عنوان مطالب اتفاقی به بازدیدکنندگان نمایش دهیم، انجام این موارد در وب به طور معمول یا با کدنویسی جاوا اسکریپت در سمت کاربر و یا با برنامه نویسی 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

نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
ساخت منوی هوشمند با PHP و CSS
آموزش ساخت نقشه XML سایت (Sitemap) با PHP و MySQL
محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess
ارسال ایمیل با PHP و کلاس PHPMailer
دیدگاه


maryam
۱۸:۰۰ ۱۳۹۸/۰۷/۲۰
بخاطر کمکتون ممنون درست شد برنامه با راهنمایی شما
میثم
۱۶:۴۸ ۱۳۹۹/۰۱/۲۱
سلام استاد عزیز.
من بر اساس ۵.۴ php و mysql کار کردم.
حالا چند تا از جداول سایتم رکوردهای زیادی دارن.
فرضا
جدول ۱ با ۱۰.۰۰۰ رکورد و ۱۲ ستون اطلاعات
جدول ۲ با ۶.۰۰۰ رکورد و ۱۵ ستون اطلاعات
جدول ۳ با ۸.۰۰۰ رکورد و ۲۰ ستون اطلاعات
جدول ۴ با ۴.۰۰۰ رکورد و ۶ ستون اطلاعات
جدول ۵ با ۱۲.۰۰۰ رکورد و ۸ ستون اطلاعات.
حالا توی یکی از صفحات سایتم من به هر ۵ جدول نیاز دارم و تقریبا به تمام ستون ها در جدول ها نیاز هست. حالا با این اوصاف از دستور زیر برای فراخوانی فلان رکورد در جدول ها استفاده می کنم.
من بر اساس ۵.۴ php و mysql کار کردم.
حالا چند تا از جداول سایتم رکوردهای زیادی دارن.
فرضا
جدول ۱ با ۱۰.۰۰۰ رکورد و ۱۲ ستون اطلاعات
جدول ۲ با ۶.۰۰۰ رکورد و ۱۵ ستون اطلاعات
جدول ۳ با ۸.۰۰۰ رکورد و ۲۰ ستون اطلاعات
جدول ۴ با ۴.۰۰۰ رکورد و ۶ ستون اطلاعات
جدول ۵ با ۱۲.۰۰۰ رکورد و ۸ ستون اطلاعات.
حالا توی یکی از صفحات سایتم من به هر ۵ جدول نیاز دارم و تقریبا به تمام ستون ها در جدول ها نیاز هست. حالا با این اوصاف از دستور زیر برای فراخوانی فلان رکورد در جدول ها استفاده می کنم.
$X = mysql_fetch_array(mysql_query("Select * From `tableA` Where `id` = '$user[id]'"));
آیا راه بهتری برای اینکه سرعت عملکرد و فراخوانی اطلاعات بیشتر بشه سراغ دارین؟ بازم میگم که من توی فراخوانی به تمام ستون های هر جدول نیاز دارم.دقیقا نمی دانیم که ساختار جداول به چه نحوی به هم مرتبط هستند، به فرض آیا Foreign Key برای جداول تعریف شده یا خیر، اما در مجموع چند راه حل برای افزایش سرعت اجرای پرس و جوها در دیتابیس وجود دارد:
- بهتر است هر ستونی از جداول که در پرس و جوها در قسمت WHERE کاربرد دارند ایندکس گذاری شوند، مثال:
- استفاده از پرس و جوی ترکیبی به فرض دستور JOIN می تواند در افزایش راندمان کار موثر باشد (البته اثر این ترکیب شاید در حد خیلی مختصر باشد اما در مجموع برای دیتابیس های خیلی حجیم بهینه تر است).
- استفاده از دستور LIMIT و محدود کردن تعداد نتایج انتخابی مد نظر هم همواره باید مد نظر باشد.
- بهتر است هر ستونی از جداول که در پرس و جوها در قسمت 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 استخراج کنم
ممنون میشم کمکم کنید و پاسخ دهید 🙏
من یک سوالی داشتم که مربوط به این بحث نیست
سوال من اینه که یه کد یا . . . میخوام که بتونم متن یا عدد روی عکس رو بتونم با 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
فایل 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 به آرایه تجزیه کنیم.
برای تنظیم اطلاعات لازم باید ساز و کار برنامه مدیریت محتوا (CMS) شما دقیق بررسی و مشخص شود اطلاعاتی مانند clientId، card، trackId، Token و... مربوط به هر کاربر از چه قسمت هایی استخراج می شوند، در نهایت می توانیم با توابعی مانند CURL درخواست را ارسال و نتیجه را با json_decode به آرایه تجزیه کنیم.
محمدرضا
۲۲:۴۹ ۱۴۰۱/۰۳/۰۱
خیلی ممنون که جواب دادید
یه سوال دیگه هم داشتم البته شرمنده چطور می شه وقتی کاربری فرمی رو توی سایت پر می کنه اطلاعات mac سیستمش ثبت بشه الان توی سایتم مشخصات مرورگر و آی پی رو ثبت می کنه ولی واسه ثبت مک چیزی پیدا نکردم
کدی چیزی نداره ازش استفاده کنم؟
توی اپلیکیشن ها دیدم اینکارو می کنن و مک رو مسدود می کنن وقتی آی پی مسدود میشه کاربر می تونه با یه آی پی دیگه وارد بشه ولی وقتی مک رو فیلتر می کنن اون کاربر نمی تونه دیگه با اون سیستم وارد بشه راهی هست بشه اینکارو انجام داد و مک کاربر هم ثبت بشه؟
با تشکر
یه سوال دیگه هم داشتم البته شرمنده چطور می شه وقتی کاربری فرمی رو توی سایت پر می کنه اطلاعات 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 فراخوانی میکنم نمیاره تصویر عکس.
لطفا راهنمایی کنید.
در جدول موقعی که عکس رو با 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());
آخرین دیدگاه ها

بهاره هوشمندی
سلام استاد خسته نباشید ببخشید باز مزاحم شدم اگه من بخوام از تگ strip_tags استفاده کنم و استثنا قائل بشم استایل های اون...۱۴۰۲/۰۹/۱۰
معراج
سلام من در قدیم سیستم مدیریت محتوا استفاده میکردن که وقتی متغیر بدون محتوا ایجاد میکردی ارور نمیداد و نیازی هم به @ قبلش...۱۴۰۲/۰۹/۰۸
ابوالفضل
سلام استاد وقتتون بخیر مثل همیشه من با یک مشکل بزرگ مواجه شدم و مجدد مزاحمتون میشم من به یک regex نیاز دارم تا...۱۴۰۲/۰۹/۰۶
بهاره هوشمندی
استاد ببخشید وقتی یه متن طولانی رو باهاش چک می کنم اگه تگ span و b داشته باشه چون تگ رو نمی بنده تا...۱۴۰۲/۰۹/۰۲
بهاره هوشمندی
با سلام استاد بزرگوار از لطف و محبت شما بسیار ممنون و سپاسگزارم خیلی عالی بود اینطوری خیلی خوب شد دستتون درد نکنه...۱۴۰۲/۰۹/۰۱
بهاره هوشمندی
با سلام و از شما من این کد رو امتحان کردم واسه متن عادی خوبه و جواب میده ولی واسه متن طولانی که رنگ...۱۴۰۲/۰۹/۰۱
بهاره هوشمندی
با سلام و خسته نباشید استاد بزرگوار آیا راهی وجود داره تفاوت دو تا متن رو با php پیدا کرد؟ مثلا با...۱۴۰۲/۰۸/۳۰
مهراد
سلام در جدول موقعی که عکس رو با php فراخوانی میکنم نمیاره تصویر عکس. لطفا راهنمایی کنید. ۱۴۰۲/۰۸/۱۷
بهاره هوشمندی
با سلام و درود استاد بزرگوار یه مشکل برام پیش اومده توی مطالب ارسالی سایت محتوایی به این صورت به متن ها اضافه شده...۱۴۰۲/۰۸/۱۷
بهاره هوشمندی
با تشکر از شما استاد گرامی پس کد رو باید اینطوری وارد کنم؟ اینطوری واسه من کار می کنه سپاسگزارم از شما...۱۴۰۲/۰۸/۰۹
بهاره هوشمندی
با سلام از لطف و محبت شما بسیار ممنون و سپاسگزارم دست شما درد نکنه لینکهای شما رو بررسی کردم یعنی باید کل کدهایی...۱۴۰۲/۰۸/۰۸
بهاره هوشمندی
با سلام و تشکر از شما من توی یه صفحه خالی هم امتحان کردم و یه amar.html هم توی پوشه root هاست ساختم بازم...۱۴۰۲/۰۸/۰۸
بهاره هوشمندی
با سلام با تشکر از شما من کاری که گفتید رو انجام دادم ولی بازم صفحه لاگین رو که میزنم باز آمارگیر اونو...۱۴۰۲/۰۸/۰۸
بهاره هوشمندی
سلام خسته نباشید من یه کد واسه آمارگیر دارم که جاو هست از سایت وبگذر بعد توی همه صفحه ها فعاله چطوری می تونم...۱۴۰۲/۰۸/۰۷
hossein
سلام وقت شما بخیر کدی هست که بشود با کمک اون، به محض حذف محصول توسط فروشندگان (افزونه دکان)، تصاویر محصول نیز حذف شوند...۱۴۰۲/۰۷/۲۵
hossein
سلام وقت شما بخیر ممنون میشم اگه راهنماییم کنید میخوام کدی در اختیارم بزارید که بتونه برام سقف درصد مدیر را تعیین کنه توی...۱۴۰۲/۰۷/۱۴
در انتظار بررسی: ۱
پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.