PDA

View Full Version : ارتباط VB.NET با php



alu0075
پنج شنبه 22 فروردین 1392, 17:53 عصر
درود بر شما دوستان گلم
من می خواستم با وی بی دات . نت با اس کیو ال ارتباط برقرار کنم نشد ئوستان گفتند باید با یک رابط php این کار را باید انجام داد :متعجب:
من به php تسلط دارم اما به وی بی.نت نه خیلی
لطفا نگید جست و جو کن کشتم نبود ....
حالا اگه می خواید بگیید جست و جو کن لطفا لینک صفحه را بزارید
ممنون از همه ی شما عزیران

singel
پنج شنبه 22 فروردین 1392, 21:00 عصر
سلام
ببخشید سوالتون رو درست پرسیدید ؟ !
ارتباط بین vb.net و SQL که بسیار راحته !
اگر مشکلتون همینه بگید تا یک تکه کد براتون بزارم

امین مستانی
پنج شنبه 22 فروردین 1392, 22:41 عصر
سلام مجدد ;

در جواب دوستمون ارتباط بین VB.NET و MSSQL قابل انجامه ولی در مورد MySQL خیلی اندک سرور ها هستن که قابلیت ریموت به دیتابیس رو باز بزارن ( فکر میکنم درست گفتم )

اولین و بزرگترین مشکل ارتباط ریموت ، لو رفتن اطلاعات دیتابیس مثل یوزرنیم و پسورد از طریق اسنیف کردن هست.
مشکلات دیگه ای مثل لزوم نصب کانکتور در سیستم کاربر و خطا های پیش بینی نشده..

میتونید از ارتباط توسط یه صفحه واسطه PHP استفاده کنید مثل نمونه ساده زیر :



<?php

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');

$result = mysqli_query($mysqli, 'SELECT * FROM table');

while($row = mysqli_fetch_array($result)){
echo $row['id'].'#'.$row['name'].'#'.$row['family'].'<br />';
}

?>


که اطلاعات درخواستی رو چاپ میکنه...
میتونید جستجو های خاص دیگه را توسط متد GET یا POST برای صفحه PHP ارسال کنید و نتیجه رو دریافت کنید و بعد خروجی رو پردازش کنید و داخل جدول نشون بدید. توسط Regular Expression (عبارات با قاعده)


موفق باشید

alu0075
پنج شنبه 22 فروردین 1392, 23:09 عصر
امین جان خیلی از شما ممنونم که من را مداوم راهنمایی می کنید ،
من توی کد php مشکلی ندارم مشکل من توی ارسال query مورد نظرم به php برای اجراست که البته با متد post و get ممکنه و اجرای اون هم با دستور process.open توی وی بی ممکنه
درست میگم ؟ اما>> 1- این دستور مرورگر هم باز میکنه و مخفیانه نیست 2- دریافت یک fetch_array توی vb.net برای دریافت اطلاعات جدول چطوریه؟
ممنون میشم راهنمایی کنید
خدا خیرت بده

alu0075
پنج شنبه 22 فروردین 1392, 23:42 عصر
سلام
ببخشید سوالتون رو درست پرسیدید ؟ !


من معذرت می خوام درسته سوالم یک کم بد پرسیده شد

من می خوام vb.net را به php و php را به mysql توی هاستم وصل کنم حالا




من توی کد php مشکلی ندارم مشکل من توی ارسال query مورد نظرم به php برای اجراست که البته با متد post و get ممکنه و اجرای اون هم با دستور process.open توی وی بی ممکنه
درست میگم ؟ اما>> 1- این دستور مرورگر هم باز میکنه و مخفیانه نیست 2- دریافت یک fetch_array توی vb.net برای دریافت اطلاعات جدول چطوریه؟
ممنون میشم راهنمایی کنید

alu0075
جمعه 23 فروردین 1392, 01:49 صبح
سلام الان ساعت 2:20 شبه من مطمئنا تا اذان صبح به پروژه ام مشغول خواهم بود ولی ....
من جواب را پیدا کردم |||||||| با تشکر از امین مستانی عزیز

توی کد زیر هر چیزی که توی php داخل صفحه conn.php چاپ یا Echo بشه توی متغییر fullres قابل برسی هست .




Imports System.Net
Imports System.IO


Public Class Form1

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim keycode As String = InputBox("inter pass")
Dim webreq As WebRequest = WebRequest.Create("http://localhost/conn.php?keycode=" & keycode)
Dim res As Net.WebResponse = webreq.GetResponse
Dim reader As StreamReader = New StreamReader(res.GetResponseStream)
Dim fullres As String = reader.ReadToEnd
If fullres = "pass" Then
MsgBox("password is ok baby")
ElseIf (fullres = "faild") Then
MsgBox("oops!! wrong password")
Me.Close()
End If
End Sub
End Class

alu0075
جمعه 23 فروردین 1392, 04:01 صبح
سلام

من که گفتم تا اذان صبح بیدارم شما باور نکردید :قهقهه: :متعجب: !!!! ساعت 4:35

حالا مشکل من اینه که چطور میشه هر کدوم از echo ها را جداگانه خوند ؟
فکر کنم جوابم توی خط 8 کد vb.net ام باشه برنامه هم آپلود کردم تا مشکلم واضح تر باشه
اینم سورسم




<?php
$con=mysql_connect("localhost","*****","*******");
if (!$con)
{
die("0");

}
else
{
echo "1";
mysql_select_db("*****");
$command=mysql_query("SELECT * FROM music");
if (!$command)
{
echo "0";
echo mysql_error();
}
else
{
echo "1 |";
while($row=mysql_fetch_array($command)){
echo ">>";
echo $row['id'];
echo $row['title'];

}
}
}



?>



اینم vb.net



Imports System.Net
Imports System.IO
Public Class Form1
Private Sub btn_connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_connect.Click
Dim webreq As WebRequest = WebRequest.Create("http://*******.ir/conn.php")
Dim res As Net.WebResponse = webreq.GetResponse
Dim reader As StreamReader = New StreamReader(res.GetResponseStream)
Dim fullres As String = reader.ReadToEnd
Dim checkerr As Byte
checkerr = Mid(fullres, 1, 2)
If checkerr = "0" Then
MsgBox("خطا در اتصال به سرویس داده ، این خطا به دلیل ", vbCritical, "خطا در اتصال")
ElseIf checkerr = "10" Then
MsgBox("برنامه به سرور متصل شده اما نمی تواند اطلاعات را دریافت کند" + vbNewLine + "این ممکن است به دلیل ترافیک بالای سرور باشد لطفا بعدا دوباره تلاش کنید", vbCritical, "خطا در دریافت اطلاعات")
Else
MsgBox(fullres, , "اطلاعات دریافتی")
End If

End Sub
End Class

توضیح :
اعداد 0 یا 1 اعلام خطا هستند چون یک جا نوشته می شن فعلا با mid برسی خطا کردم
لطفا برنامه را دانلود کنید تا کامل متوجه بشد منظورم چیه
ممنون از همه تون دوستان

امین مستانی
جمعه 23 فروردین 1392, 11:48 صبح
سلام مجدد

دوست عزیز بهترین روش برای پردازش رشته خروجی به نظر من استفاده از Regular Expression هست

من یک نمونه واستون نوشتم :

خروجی رو باید بر اساس یک الگو خاص نوشت و با رگولار اکسپرشن پردازش کرد

چاپ خروجی توسط PHP :


echo '<<'.$row['id'].'#'.$row['title'].'>>';


پردازش توسط VB.NET :




Imports System.Text.RegularExpressions
Imports System.Net
Imports System.IO

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

Dim webreq As WebRequest = WebRequest.Create("http://localhost/test.php")
Dim res As Net.WebResponse = webreq.GetResponse
Dim reader As StreamReader = New StreamReader(res.GetResponseStream)
Dim fullres As String = reader.ReadToEnd
res.Close()
reader.Close()

Dim M As MatchCollection = Regex.Matches(fullres, "<<(\d+)#(\w+)>>", RegexOptions.IgnoreCase)
For Each Match As Match In M
ListBox1.Items.Add(Match.Groups(1).Value & "-" & Match.Groups(2).Value)
Next
End Sub
End Class




سوالی بود در خدمتم


موفق باشید

alu0075
شنبه 24 فروردین 1392, 17:50 عصر
دوستان ممنون مشکل حل شد