PDA

View Full Version : مشکل با mysqli_escape_string



Mohammad-tashi
شنبه 23 آبان 1394, 23:27 عصر
باسلام و عرض احترام
من دارم یک فرم لاگین میسازم
توی روت اصلیم فایلlogin.php هست
توی پوشه inc یک فایل config و یک پوشه class توی پوشه کلاس یک فایل vali.php
فایل لاگین به صورت زیره



$username = $password = $check ="";
if (isset($_POST['username']) && isset($_POST['password']) ){
include "inc/configqaz.php";
include "inc/class/vali.php";
$valid=new valid;


$username = $valid->chkdb($_POST['username']);
$password = $valid->chkdb($_POST['password']);
$check = $valid->chkdb($_POST['check']);
echo"$username";

if (!isset($username) || $username == ''){
echo "فیلد نام کاربری نباید خالی باشد!";
}
elseif (!isset($password) || $password == ''){
echo "فیلد کلمه عبور نباید خالی باشد!";
}



$password = sha1($password);


if ( $check == 'sended'){


$sel_user ="SELECT * FROM AQAPI_users WHERE username = '$username' AND password = '$password'";

$run_user = mysqli_query($con, $sel_user);

$check_user = mysqli_num_rows($run_user);

if($check_user==1){


session_start();
$_SESSION['x1'] =$username;
$_SESSION['x2'] =$password;
$_SESSION['karbar'] =$username;

$_SESSION['start']=time();
$_SESSION['end']=$_SESSION['start']+(1120);
//header ("Location: index.php");
echo"hi";
}
else{
// اطلاعات کاربر صحیح نیست
echo "اطلاعات وارد شده صحیح نیست!<br />";
}
}






}


فایل کلاس :


<?php
include "inc/configqaz.php";

class valid {
function chk($datax){

$datax = trim($datax);
$datax = stripslashes($datax);
$datax = htmlspecialchars($datax);

return $datax;}








function chkdb($datax){


$datax = $con->mysqli_escape_string($datax);

return $datax;}


}


?>



فایل کانفیگ:


<?php
$con = mysqli_connect("localhost", "root", "", "cms");
if(mysqli_connect_errno($con) > 0)
echo "Can not connect to server:<br/>".mysqli_connect_error();
mysqli_set_charset($con,"utf8");
?>



من حالا نمیدونم چرا ارر
Notice: Undefined variable: con in
va
Fatal error: Call to a member function mysqli_escape_string() on a non-object in C
رو میده

مشکل از کجاست؟

mojooriass
یک شنبه 24 آبان 1394, 11:36 صبح
داخل کلاس قبل از این که از متغییر con استفاده کنید باید ان را به صورت global تعریف کنید در خط 6 این کد را قرار بدید :


global $con;

charcharkh
یک شنبه 24 آبان 1394, 12:07 عصر
ببین از همین الان برو سراغ PDO و شک هم نکن و سعی کن بطور آبجکتیو بنویسی خیلی بهتره :خجالت:

Mohammad-tashi
یک شنبه 24 آبان 1394, 18:58 عصر
متاسفانه مشکل حل نشد

بازم ارر زیر رو میده
Fatal error: Call to undefined method mysqli::mysqli_escape_string()


اینم کد کلاسم
یه سوال دیگه دوتا تابع رو یکی کنم؟




<?php
include "inc/configqaz.php";
class valid {


function chk($datax){
global $con;
$datax = trim($datax);
$datax = stripslashes($datax);
$datax = htmlspecialchars($datax);

return $datax;}








function chkdb($datax){
global $con;


$datax = $con->mysqli_escape_string($datax);

return $datax;}


}


?>

Mohammad-tashi
یک شنبه 24 آبان 1394, 19:01 عصر
هرچی که هست مربوط میشه به نخوندن متغیر $con که شی اتصال من هست
توجه کنید هم داخل فایل لاگین اینکلود شده فایل کانفیگ
هم داخل کلاس
مسیر فایل ها هم این شکلیه
توی روت اصلیم فایلlogin.php هست
توی پوشه inc یک فایل config و یک پوشه class توی پوشه کلاس یک فایل vali.php

Mohammad-tashi
دوشنبه 25 آبان 1394, 00:25 صبح
چطور میشه فهمید به بانک وصل شده یا نه
یا بهتر بگم چطور میشه چک کرد $con ساخته شده یا نه؟

Mohammad-tashi
دوشنبه 25 آبان 1394, 11:51 صبح
up....................

injaneb2020
دوشنبه 25 آبان 1394, 22:46 عصر
سلام . من هم دارم روی فرم لاگین کار می کنم . مشکلم پیاده سازی سطوح مختلف دسترسی برای کاربران مختلفه :گریه:
ولی توی اتصال به بانک مشکلی نداره . این کد منه شاید مشکلت حل بشه
<?php
session_start();

$username=$_POST['txtuser'];
$password=$_POST['txtpass'];


?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title> ورود به سایت</title>
</head>

<body>
<?php
//بررسی معتبر بودن اطلاعات ارسالی کاربر
//نام کاربری
if (!isset($username) || $username == ''){
echo "فیلد نام کاربری نباید خالی باشد!";
$check_error = 1;
}
//کلمه عبور
elseif (!isset($password) || $password == ''){
echo "فیلد کلمه عبور نباید خالی باشد!";
$check_error = 1;
}



$con = mysqli_connect('localhost','root','',"edu");
if (!$con) {
die('Could not connect: ' . mysqli_error($con));
}


mysqli_select_db($con,"edu") or die(mysql_error());


$sql="SELECT * FROM edu_stu WHERE stu_id = '$username' AND stu_mcode='$password'";
$result = mysqli_query($con,$sql);

// تعداد ردیف های موجود
$count = mysqli_num_rows($result);

//printf("Result set has %d rows.\n",$count);
// Free result set
mysqli_free_result($result);
if($count > 0){
// اطلاعات کاربر درست است، تنظیم مجوز های استفاده از بخش اعضاء
$_SESSION['username'] = $_POST['txtuser'];
$_SESSION['password'] = $_POST['txtpass'];
echo "شما به سایت وارد شده اید!<br />";
}
else{
echo "اطلاعات وارد شده صحیح نیست!<br />";
}

//if($row = mysqli_fetch_array($result)) {
//echo' <button>'.$row['stu_id'];

//}


mysqli_close($con);
?>
</body>
</html>