• 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
چگونگی خواندن پارامترهای گرفته شده از فرم قبل و چاپ آنها در صفحه
#1
سلام
من برای نمایش خطاها در هنگام ثبت نام کاربر جدید یکسری پارامتر رو به صفحه ابتدایی که کاربر اونجا فرم رو پر کرده می فرستم و می خوام به کاربر بگم که مثلا کد ملی فقط باید عدد باشه و کراکتر - غیر قابل قبوله .
حالا من تونستم با کمک دوستان تا اینجای کار رو پیش برم و موقعی که خطایی رخ می ده به برنامه گزارش بدم.
این نوار آدرس منه:
کد پی‌اچ‌پی:
http://127.0.0.1/temp/register.php?errshsh=errshsh%3Derrshsh&errni=errni%3Derrni&errtel=errtel%3Derrtel&errmobile=&errcitycode=errcitycode%3Derrcitycode&errpc=errpc%3Derrpc&errfill=errfill%3Derrfill&errpass=&errexistuser=errexistuer 
چطور میشه این کدها رو تفکیک کرد و خطاها رو نمایش داد؟
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط :
#2
داخل صفحه این رو بنویسید متوجه میشید
کد پی‌اچ‌پی:
<?php
print_r
($_GET)
?>
  پاسخ
تشکر شده توسط :
#3
جناب سهرابلوی عزیز وقتی این کد رو توی برنامه نوشتم این خروجی رو بهم داد:
کد پی‌اچ‌پی:
Array ( [errshsh] => errshsh=errshsh [errni] => [errtel] => [errmobile] => [errcitycode] => [errpc] => [errpass] => [errexistuser] => errexistuer 
این جواب چیزی رو نمی تونه ثابت کنه.
لااقلش من نمی تونم چیزی ازش بفهمم.
بیشتر شرح بدین.
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط :
#4
دوست من
شما در مورد روشهای POST یا GET چیزی می دونید؟
قصد جسارت ندارم فقط قصد راهنمایی هست. لزوما شما باید از مبنای php چیزهایی رو فرا گرفته باشید
پیشنهاد من به شما دو چیز است
۱− از یک کتاب استفاده کنید
۲− منتظر باشید قسمت LMS راه اندازی بشه و از LMS سایت برای یادگیری مبنا و مسائل پایه php استفاده کنید
  پاسخ
تشکر شده توسط :
#5
سلام

به نظر می رسه شما تازه دارین php رو یاد می گیرین و به خیلی از مقدمات آشنا نیستین.
من پیشنهاد می کنم حتما کتاب " آموزش گام به گام php " نوشته مهدنس عین الله جعفرنژاد قمی رو حتما بخونید.

ولی در مورد این سوالتون

علامت "؟" در url به سیستم می فهمونه که ما می خواهیم فرستادن مقادیر رو از طریق url شروع کنیم. حالا اگه دقت کنین نوشتین "errshsh" این همون اسم متغییر ماست ، مثل اوقاتی که مثلا می نویسیم q$ و یا mystring$ و یا هر متغییر دیگه ای رو اسم گذاری می کنیم ولی فرقش اینه که توی url علامت "$" گداشته نمی شه ، بعد علامت "=" اومده که حالا می خواهیم بعد از تعریف اسم متغیر مقدار متغیر رو در اون قرار بدیم که در همین مثال خودتون و url ای که دادین مقدار متغییر "errshsh" رو برابر "errshsh Drrshsh" قرار دادین و بعد علامت "&" اومده که نشون می ده این متغییر تموم شده و متغییر بعدی می خواد شروع بشه. تا اینجای کار که فکر کنم خودتون هم می دونستین ولی برای گرفتن این مقادیر در صفحه و استفاده از اون باید از دستور $_GET و به شکل زیر استفاده کنین.

کد:
$_GET['errshsh'];

یعنی اگه بخواهید مقدار متغیر errshsh رو چاپ کنید به طور مثال به این شکل عمل می کنیم.

کد:
$m = $_GET['errshsh'];
echo $m;

برای تمام مقادیر دیگه ای که از طریق url فرستادین هم باید به همین شکل عمل کنید.
(راستی دقت کنید که حروف کلمه "GET" با حروف بزرگ انگلیسی نوشته شده )
خدانگهدار.
ایران سرزمین من است ، سرزمین پدران من است.
به خاکش سوگند ، برایش خون هم خواهم داد.
  پاسخ
تشکر شده توسط : kavoshgar63
#6
چند تا تشکر از همه دوستان و یه گلایه کوچیک از برخی دوستان.
هدف از اومدن ما در این انجمنها اینه که بتونیم تجربیاتمون رو انتقال بدیم و انتقال تجربه یکباره اتفاق نمیفته و این کار مستلزم داشتن صبر و گذر زمانه.
من قصد اذیت ندارم و اصلا هم خوشم نمیاد که سئوال بیخودی بپرسم چون برای وقت همه دوستان عزیز ارزش و احترام قائلم .
من قبل از این که دست به کار بشم کتاب آقای ابراهیمی رو خوندم و تازه قبل از اون هم کنار دست یکی از دوستان php کار نشستم و برخی کدها و مفاهیم رو یادگرفتم از طرفی زبان c و ++c رو هم گذروندم با syntax زبان های مانند c آشنام.
لذا خواهشم اینه که دوستان لطف کنن و با گوشه و کنایه عیب یاد نداشتن ما رو به رخ ما نکشن چون این کار به نفع جامعه علمی کشور نیست .
باید کمی صبور بود و افراد مبتدی رو تحمل کرد.
من همین جا عذر خواهی می کنم از همه دوستان که وقتشون رو گرفتم و امیدوارم که این نوشتار باعث رنجش خاطر کسی نشه.
در پست بعد می گم مشکلم چه طور حل شد.
مشکل من این بود که در قسمت چک کردن خطا اصلا از بیخ و بن اشتباه مقدار دهی کردم به خط زیر نگاه کنید
کد پی‌اچ‌پی:
if (!ereg ("([0-9]{10}$)"$postalcode$regs)) 
  {
    
$errpc="errpc=errpc";
    
$totalerror+=1;
    } 
[/size]
در صورتی که این خط رو باید این طور می نوشتم
کد پی‌اچ‌پی:
if (!ereg ("([0-9]{10}$)"$postalcode$regs)) 
  {
    
$errpc="err";
    
$totalerror+=1;
    } 
و این اشتباه باعث شد که من در نوار آدرسم این پیغام رو بگیرم
کد پی‌اچ‌پی:
errpc=errpc%3Derrpc 
در صورتی که در کد اصلاح شده این پیغام باید ظاهر میشد:
کد پی‌اچ‌پی:
errpc=err 
خب این مقداردهی اشتباه باعث شد که من کلی گیج بشم توی این قضیه و نتونم نوار آدرس رو درست برای خودم ترجمه کنم ولی الحمدلله فهمیدم مشکل از کجاست و سریع مشکل رو حل کردم در فایل functions.php که در صفحه رجیسترم به کارگیری کردم این تابع رو نوشتم و همه خطا ها رو با این تابع چاپ کردم.
کد پی‌اچ‌پی:
function _IS_Get($Str_get)
{
if(isset(
$_GET[$Str_get]))
                if(
$_GET[$Str_get]=='err')
                {
                 
showMsg($Str_get);
                };    
return 
1;

لازم به ذکر است که تابع showMsg($Str_get) یک تابعی هست که با switch نوشتم و خودش خطا رو در صفحه چاپ می کنه.
ولی الان یک موضوع دیگه اتفاق افتاده اونم این که وقتی برای نمایش خطا به صفحه ثبت نام بر می گردم تکست فیلد ها ریست شده اند و کاربر بیچاره باید 28 تا فیلد رو دوباره مقداردهی کنه.
حال اساتید محترم بفرمایند که چطور میشه در زمان بازگشت به صفحه قبل مقادیر تکست فیلد ها رو حفظ کرد؟
اینم کد ارسال پارمترهاست به صفحه رجیستر.
کد پی‌اچ‌پی:
    $params = array 
    ( 
        
errshsh=>$errshsh
        
errni => $errni,
    ); 
$url '../register.php?'.http_build_query($params); 
echo (
'<meta http-equiv="refresh" content="0;url=' $url '">');
@
header("location: $url");
@exit(
''); 
    } 
موفق و پیروز باشید.
بدان کوش تا زود دانا شوی
چو دانا شوی زود والا شوی

سایت شخصی
  پاسخ
تشکر شده توسط :
#7
سلام

می تونین پارامتر ها رو دوباره از طریق GET به همون صفحه اول برگردونین و دوباره بگیرین که البته خودم چند مورد لازم شده که همیشه با فرستادن حروف فارسی از طریق url به مشکل خوردم.

یه راه بهتر اینه که اگر اطلاعات خیلی مهم نیستن و از نظر امنیت اهمیتی ندارن برای هرکدوم یه cooke تنظیم کنین و موقعی که از طریق دستور header دوباره برگشتین به صفحه اول cooke ها رو بازیابی کنید.

درضمن من فکر می کنم که توی این قطعه کدی که آخر نوشتن فقط همون دستور heaser کافیه و نیاز به اون خط بالاییش که از دستور echo استفاده کردین نیست چون در اصل جفتش یه کار رو انجام می دن فقط با این تفاوت که یکی از طریق دستور php به صفحه قبل برمی گرده و یکی از طریق دستورات html .

خدانگهدار.
ایران سرزمین من است ، سرزمین پدران من است.
به خاکش سوگند ، برایش خون هم خواهم داد.
  پاسخ
تشکر شده توسط :
#8
یه پیشنهاد دارم برای اینکه بتونین بهتر کد نویسی کنید به این مثال توجه کنید
برای ورود کاربر هست
البته مثال خیلی ناقص هست فقط می خوام روش اینکه چه راهی بهتر هست که کاربر رو به صفحات هدایت کنید رو بگم
کد پی‌اچ‌پی:
<?php
    $username
=$_POST['username'];
    
$password=$_POST['password'];
    
$error="";
    if(
$_POST['login']){
        if(!
$username){
            
$error.="Please type your username <br>";
        }
        if(!
$password){
            
$error.="Please type your password <br>";
        }
        if(!
$error){
            
header("Location usercp.php");
            exit;
        }
    }
    
    
?>
<html>
    <head>
        
    </head>
    <body>
        <?php
        
if($error){
            echo 
$error;
        }
        
?>
        <form method="post">
            Username : <input type="text"  name="username" value="<?php echo  $username?>"> <br />
            Password : <input type="password" name="password" value="<?php echo $password?>"><br />
            <input type="submit" name="login" value="Login">
        </form>
        
    </body>
</html> 
  پاسخ
تشکر شده توسط : kavoshgar63


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان