هل هذا الكود جيد لتعديل نص في ملف نصي - ali.alfoly - 11-04-14
السلام عليكم
هل هذا الكود جيد ام ان هناك افضل
انا الي كاتبه ومليش خبرة في php
<?php
كود :
$deml = $_GET['e'];
$neml = $_GET['n'];
$logfile= 'Text_Emails_Users.txt';
$data = file_get_contents($logfile);
$newdata = str_replace($deml, $neml, $data);
file_put_contents($logfile, $newdata);
?>
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - oneyemenweb2 - 15-04-14
السلام عليكم
الان اعتقد انك تريد من الكود
ان ترسل نص من برنامجك
الصفحة تستقبل النص وتضيفة الى النص السابق صح او لا
مثلا انهو سجل اخطاء او ما شابه
وضح لي المقصد حتى نعمل شي جميل
واعتذر عن تاخري في الرد لاني اعود من العمل واغلب الاحيان تكون الكهرباء مقطوعة عند عودتي
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - ali.alfoly - 24-04-14
اعتذر عن التأخير في الرد ايضا
وضعت ملف به ايملات المستخدمين للتحقق من وجود البريد قبل ذلك قبل عملية التسجيل في البرنامج
وهذا ملف في حالة التعديل علي بريد ما اريد كما قلت حدرتك ارسال البريد الجديد والقديم الي الملف فيقوم بأستبداله من الملف
وجزاك الله خيرا
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - oneyemenweb2 - 24-04-14
اوكي اخي با اعمل كود بدتا بيس mysql
وكود بفايل
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - ali.alfoly - 24-04-14
كان نفسي فعلا اتعامل مع قواعد البينات mysql بس للاسف مالي اي خبرة في ذلك
مؤقتا قمت بعمل كل بيناتي داخل ملفات
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - oneyemenweb2 - 24-04-14
سلام عليكم اولا هذا ب file
اولا الجزاء الخاص ب c#
اولا نظيف هذه المكتبات
كود :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Net;
using System.Web;
using System.Net.NetworkInformation;
ثم دالة الارسال
كود :
public static int hold = 5;
public static bool hold_net_work = false;
internal string getHTTP(string szURL, string szPost)
{
bool ok = false;
int error = 0;
fe:
try
{
HttpWebRequest httprequest;
HttpWebResponse httpresponse;
StreamReader bodyreader;
string bodytext = "";
Stream responsestream;
Stream requestStream;
httprequest = (HttpWebRequest)WebRequest.Create(szURL);
httprequest.Method = "POST";
httprequest.ContentType =
"application/x-www-form-urlencoded";
httprequest.ContentLength = szPost.Length;
requestStream = httprequest.GetRequestStream();
requestStream.Write(Encoding.ASCII.GetBytes(szPost), 0,
szPost.Length);
requestStream.Close();
httpresponse = (HttpWebResponse)httprequest.GetResponse();
responsestream = httpresponse.GetResponseStream();
bodyreader = new StreamReader(responsestream);
bodytext = bodyreader.ReadToEnd();
ok = true;
return bodytext;
}
catch
{
goto fe;
}
return "post_error";
}
الان الدالة التي سنستدعي بها الدالة السابقة ايضا في c#
كود :
public void my_reg(string old_email,string new_email)
{
string result = getHTTP(@"http://mysite.com/s.php", "old_email=" + old_email + "&new_email=" + new_email);
switch (result)
{
case "post_error":
// خطاء في الشبكة
break;
case "email_change_ok":
// تم تغيير البريد بنجاح
break;
case "old_not_found":
// البريد السابق غير موجود
break;
case "server_not_respous":
// المخدم لا يستجيب او ان الملف غير قابل للقراءة والكتابة
break;
case "input_is_not_email":
// المدخلات ليست بريد الكتروني صحيح
break;
case "input_empty":
// المدخلات فارغة
break;
default:
// خطاء غير معروف
break;
}
}
الان صفحة php
كود :
<?php
$filename='/path/to/foo.txt';
$filenamelog='/path/to/log.txt';
$email_array=null;$counter_of_email=0;
if((!empty($_POST['new_email'])) &&(!empty($_POST['old_email'])) )
{
if((filter_var($_POST['new_email'], FILTER_VALIDATE_EMAIL))&&(filter_var($_POST['old_email'], FILTER_VALIDATE_EMAIL))) {
$email= mysql_real_escape_string($_POST['new_email']);
$old=mysql_real_escape_string($_POST['old_email']);;
if ((file_exists($filename))&& (is_writable ($filename )) && (is_readable ($filename ))) {
$file = fopen($filename, "r+");
while(!feof($file)) {
$email_array[$counter_of_email] =fgets($file);
$counter_of_email++;
}
fclose($file);
if(in_array( $old, $email_array))
{
$key = array_search($old, $email_array);
$key--;
$email_array[$key]=$email;
file_put_contents($filename, "");
$file = fopen($filename, 'w');
foreach ($email_array as $value) {
fwrite($file, $value.'\n');
}
fclose($file);
$da= date("Y-m-d H:i:s");
$fp = fopen($filenamelog, 'w');
fwrite($fp, "email is change from $old to $email at $da \n");
fclose($fp);
echo 'email_change_ok';
}
else {
echo 'old_not_found';
}
}
else {
echo 'server_not_respous';
}
}
else {
echo 'input_is_not_email';
}
}
else
{
echo 'input_empty';
}
?>
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - oneyemenweb2 - 24-04-14
طبعا ملفين ملف سجلات التعديل
وملف الي فيه الايميل طبعا هذا على السريع والكهرباء قاتله لنا
$filename='/path/to/foo.txt';
$filenamelog='/path/to/log.txt';
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - vbnet - 24-04-14
(11-04-14, 03:31 AM)ali.alfoly كتب : السلام عليكم
هل هذا الكود جيد ام ان هناك افضل
انا الي كاتبه ومليش خبرة في php
كود :
<?php
$deml = $_GET['e'];
$neml = $_GET['n'];
$logfile= 'Text_Emails_Users.txt';
$data = file_get_contents($logfile);
$newdata = str_replace($deml, $neml, $data);
file_put_contents($logfile, $newdata);
?>
(24-04-14, 01:04 PM)ali.alfoly كتب : كان نفسي فعلا اتعامل مع قواعد البينات mysql بس للاسف مالي اي خبرة في ذلك
مؤقتا قمت بعمل كل بيناتي داخل ملفات
لغة PHP سهلة جداً فهي مشابهة إلى حد ما لـ JAVA وC
ولغة MySql مشابهة إلى حد كبير لـ SQLServer
ال GET_$ يقرأ المعطيات التي أرسلت بأسلوب GET (أي ظاهرة في العنوان HTTP)، في حين يستخدم POST_$ لقراءة المعطيات مع الأسلوب POST.
ال ( file_get_contents ) هي دالة تقرأ محتوى من ملف.
ال ( file_put_contents ) هي دالة تكتب محتوى في ملف.
ال ( str_replace ) هي دالة تستبدل نص بآخر في محتوى نصي.
أعلم أنكم تعرفون كل هذا.
هناك مشكلة ستحصل في الكود السابق:
المشكلة في حالة أنك تريد تغيير الإيميل abc@mail.com ويوجد إيميل يزيد في البداية أو النهاية بأي أحرف
هنا سيتم تغيير أيضا الأجزاء المطابقة في الإيميلات التالية
xxabc@mail.com
abc@mail.com.eg
xxabc@mail.com.eg
إذا... لابد من وجود رموز تميز بداية ونهاية الإيميل بشكل صحيح مثل ; أو : أو أقواس وما شابه مما لا يمكن وجودة في الإيميل وذلك في داخل الملف
هنا مثال لحل هذه المشكلة في الكود السابق في حال استخدام الأقواس { } لتحديد الإيميل في داخل الملف
كود :
$newdata = str_replace( "{".$deml."}" , "{".$neml."}" , $data );
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - oneyemenweb2 - 25-04-14
إقتباس : ولغة MySql مشابهة إلى حد كبير لـ SQLServer
معذرة اخي MySql و SQLServer ليست لغات ولكنها انظمة قواعد بيانات ولكن لنقول ان لغة الاستعلام sql ansi موحدة لجميع الانظمة تقريبا مع اختلاف ميزات هنا وهناك
RE: هل هذا الكود جيد لتعديل نص في ملف نصي - ali.alfoly - 26-04-14
جزاكم الله خيرا اخواني واسف علي التأخير في الرد كنت اذاكر الموضوع 
جزاك الله خيرا اخي vbnet فعلا تنويه مهم وتم التعديل . ومعلومات قيمة جدا جدا جزاك الله خيرا
اخي الحبيب oneyemenweb2 جزاك الله خيرا ونفع بك وجعله في موازين حسناتك
بالنسبة لسجل التغير انا لا اريد عمل سجل تغير
واريد فهم بعض الامور وهي
1 - عند كتابة مسار الملف النصي في المصفح يتم عرض عنوانين البريد المخزنة به تفاديت هذه المشكلة بتشفير النص قبل رفعه
بحيث النص قبل التشفير
كود :
{ali.alfoly1@gmail.com}
{ali.alfoly2@gmail.com}
{ali.alfoly3@gmail.com}
عند تشفير النص يوجد به بعض الاحرف التي تتعارض مع طبيعة لغة البرمجة PHP مثل الرمز # فقمت بتحويل النص المشفر الي Asc
بحيث اصبح بعد التعديل الي
كود :
{80 73 82 54 103 72 122 78 113 120 78 54 69 81 114 77 56 85 97 }
{80 73 82 54 103 72 122 78 113 72 122 78 113 120 78 54 69 81 114 77 56 85 97 }
{80 73 82 54 103 120 78 54 69 81 114 77 56 85 97 }
للعلم هناك ملف خاص بعنواين البريد وملف خاص باسماء المستخدمين كل هذا من اجل ضمان عدم تكرار احدهم
2 - الكود الخاص بالارسال
كود :
Public Function Edet_Text_Email(old_email As String, new_email As String) As String
Dim result As String = getHTTP("http://www.sh-ml.net/Edet_Text_Email.php", "old_email=" & old_email & "&new_email=" & new_email)
Select Case result
Case "post_error"
Return "خطاء في الشبكة"
Case "email_change_ok"
Return "تم تغيير البريد بنجاح"
Case "old_not_found"
Return "البريد السابق غير موجود"
Case "server_not_respous"
Return "المخدم لا يستجيب او ان الملف غير قابل للقراءة والكتابة"
Case "input_is_not_email"
Return "المدخلات ليست بريد الكتروني صحيح"
Case "input_empty"
Return "المدخلات فارغة"
End Select
Return "خطاء غير معروف"
End Function
Friend Function getHTTP(szURL As String, szPost As String) As String
fe:
Try
Dim httprequest As HttpWebRequest
Dim httpresponse As HttpWebResponse
Dim bodyreader As StreamReader
Dim bodytext As String = ""
Dim responsestream As Stream
Dim requestStream As Stream
httprequest = DirectCast(WebRequest.Create(szURL), HttpWebRequest)
httprequest.Method = "POST"
httprequest.ContentType = "application/x-www-form-urlencoded"
httprequest.ContentLength = szPost.Length
requestStream = httprequest.GetRequestStream()
requestStream.Write(Encoding.ASCII.GetBytes(szPost), 0, szPost.Length)
requestStream.Close()
httpresponse = DirectCast(httprequest.GetResponse(), HttpWebResponse)
responsestream = httpresponse.GetResponseStream()
bodyreader = New StreamReader(responsestream)
bodytext = bodyreader.ReadToEnd()
Return bodytext
Catch
GoTo fe
End Try
Return "post_error"
End Function
انا كنت استخدم الكود
كود :
Try '- تعديل الاسم في ملف ااسماء
Dim request As WebRequest
request = WebRequest.Create(
"http://www.sh-ml.net/Edet_Text_Names.php?e=" & Me.Name_selct & "&n=" & New_Det_User.nem)
request.GetResponse()
Catch ex As Exception
Me.Text_Err = "خطاء في حفظ الاسم في ملف الاسماء : اعد المحاولة"
Return
End Try
فكان ذلك اسهل بكثير فرجاء توضيح فائدة الكود السابق حتي اعرف الفرق
3 - كود ملف الـ PHP قمت بتعديله بحيث ازلة شرط التحقق من البريد لاني كما وضحت لحدرتك سيصبح نص ASC وليس بريد
واريد من حدرتك تعديله بحيث لا يقوم بتسجيل سجل تغيرات فقط يقوم بالتعديل وجزاك الله خيرا
كود :
<?php
$filename='/path/to/foo.txt';
$filenamelog='/path/to/log.txt';
$email_array=null;$counter_of_email=0;
if((filter_var($_POST['new_email'], FILTER_VALIDATE_EMAIL))&&(filter_var($_POST['old_email'], FILTER_VALIDATE_EMAIL))) {
$email= mysql_real_escape_string($_POST['new_email']);
$old=mysql_real_escape_string($_POST['old_email']);;
if ((file_exists($filename))&& (is_writable ($filename )) && (is_readable ($filename ))) {
$file = fopen($filename, "r+");
while(!feof($file)) {
$email_array[$counter_of_email] =fgets($file);
$counter_of_email++;
}
fclose($file);
if(in_array( $old, $email_array))
{
$key = array_search($old, $email_array);
$key--;
$email_array[$key]=$email;
file_put_contents($filename, "");
$file = fopen($filename, 'w');
foreach ($email_array as $value) {
fwrite($file, $value.'\n');
}
fclose($file);
$da= date("Y-m-d H:i:s");
$fp = fopen($filenamelog, 'w');
fwrite($fp, "email is change from $old to $email at $da \n");
fclose($fp);
echo 'email_change_ok';
}
else {
echo 'old_not_found';
}
}
else {
echo 'server_not_respous';
}
}
?>
|