Tag: php

可靠地在C#中重现用PHP实现的传统密码散列方法

我们正在将在Linux上运行的PHP应用程序迁移到我们在C#中实现并在Windows上运行的新单点登录(SSO)基础架构。 作为迁移过程的一部分,我们需要我们的C#SSO基础架构能够以与PHP应用程序完全相同的方式散列密码。 虽然PHP应用程序使用了一个相当合理的密码散列算法,但是除了密码和salt之外, 不幸的是,得到散列的字符串还包含salt值的余弦值(解释为整数) ……这是一个相当不寻常的决定。 midly。 不出所料,事实certificate,在PHP和C#中计算大整数的余弦导致结果略有不同。 这意味着我们可能无法在新的SSO基础架构中可靠地重新实现传统密码散列算法。 我们考虑的一个解决方案是在AWS Lambda中运行PHP密码散列函数,并从我们的SSO基础架构中查询Lambda。 你能想到其他选择吗?

通过JSON / PHP(base64_encode)从基于图像的C#中解释base 64

所以我能够成功读取图像文件,并将其传递回我的C#应用​​程序,但我无法正确解码。 我通过PHP返回JSON数据(json_encode函数未显示): $imgbinary = fread(fopen($filename, “r”), filesize($filename)); if ( strlen($imgbinary) > 0 ){ return array(“success”=>true, “map”=>base64_encode($imgbinary)); } 然后在C#中我使用Newtonsoft.Json解码字符串(我可以成功读取成功和地图属性),但我无法使用base64解码将图像正确写入文件(或显示)。 我是这样做的: File.WriteAllText(System.Windows.Forms.Application.StartupPath + “\\MyDir\\” + FileName, Base64Decode(FileData)); public string Base64Decode(string data) { byte[] binary = Convert.FromBase64String(data); return Encoding.Default.GetString(binary); } 我在这里想念一些疯狂的东西吗? 真正奇怪的是我解码数据后,文件大小比原始文件大。 (我知道一旦你编码,数据增加了大约33%,奇怪的是,在我解码后,它仍然更大)。 任何帮助/指针将不胜感激!

将二进制数据从C#上传到PHP

我想将文件从Windows C#应用程序上传到运行PHP的Web服务器。 我知道WebClient.UploadFile方法,但我希望能够以块的forms上传文件,以便我可以监视进度并能够暂停/恢复。 因此,我正在阅读文件的一部分并使用WebClient.UploadData方法。 我遇到的问题是我不知道如何访问从UploadData发送的数据。 如果我对post数据执行print_r,我可以看到有二进制数据,但我不知道访问它的密钥。 如何访问二进制数据? 有没有更好的方法我应该完全这样做? String file = “C:\\Users\\Public\\uploadtest\\4.wmv”; using (BinaryReader b = new BinaryReader(File.Open(file, FileMode.Open))) { int pos = 0; int required = 102400; b.BaseStream.Seek(pos, SeekOrigin.Begin); byte[] by = b.ReadBytes(required); using (WebClient wc = new WebClient()){ wc.Headers.Add(“Content-Type”, “application/x-www-form-urlencoded”); byte[] result = wc.UploadData(“http://192.168.0.52/html/application.php”, “POST”, by); String s = System.Text.Encoding.UTF8.GetString(result, 0, result.Length); MessageBox.Show(s); […]

用于.net的Phalanger和php库

我有三个我想在我的.net应用程序中使用的php类。 我使用Phalanger来获取这三个类并使用此命令创建一个.dll文件: phpc /target:dll Client.php Crypt.php Exception.php 当然输出了Client.dll以及Client.pdb文件。 从那里我去了VS2012并创建了一个新的asp.net应用程序并添加了Client.dll作为参考。 但是我没有看到任何类的公共方法和对象浏览器窗口显示: 客户端>客户端>基本类型>对象(这样我只有Object类型的方法) 我已经尝试过这个方法/教程来使其工作,这涉及将自定义接口转换到您的对象但是我收到错误: 找不到类型或命名空间名称ScriptContext 这当然意味着它不知道ScriptContext的内容或位置。 但是这个教程是从2007年开始的,所以我不知道它是否会过时或者我应该从哪里获得该类? 我找到的另一个教程就像以前一样。 它说: 如果你想使用现有的PHP源代码(为标准解释器开发)而不进行修改,你必须使用传统模式,但是当你想开发新的PHP项目时,你可以考虑使用纯模式 但我无法在文档中找到遗留模式的步骤,并且更喜欢尝试“纯”模式(因此我不必更改/编辑我现有的PHP代码)。 我确实尝试过(纯模式)但是它不会使用上面的命令编译(phalanger compile)(将DynamicObject.php类添加到命令中)。 如何在php类中获取我的公共方法?

将PHP数组转换为C#

我正在为第三方API编写C#客户端(我正在使用RestSharp nuget包)。 他们的文档包含PHP示例,我必须将其转换为C#。 他们的大多数样本都很简单,我已经能够将它们转换为C#,但我正在努力解决其中一个因为它接受一个数组数组。 以下是他们的文档中的示例: $params = array ( ‘user_key’ => ‘X’, ‘client_id’=> ‘X, ‘label’ => array( array( ‘language’ => ‘en_US’, ‘name’ => ‘English label’, ), array( ‘language’ => ‘fr_CA’, ‘name’ => ‘French label’, ), ), ); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, ‘https://api.3rdparty.com/xxx/yyy’); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array(‘apikey: YOURAPIKEY’)); curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, […]

关于在c#Desktop应用程序中使用php web服务的问题

我正在开发ac#desktop应用程序并使用在我尝试使用该应用程序时在php应用程序中开发的webservies。 我只是添加该Web服务的Web引用,并尝试通过以下代码访问 WebReference.TestWSDL pdl = new testingApp.WebReference.TestWSDL(); string copy = pdl.verify(“testing”); 当我尝试调用方法validation时,它会抛出错误。 错误是 可能的SOAP版本不匹配:Envelope命名空间http://schemas.xmlsoap.org/wsdl/是意外的。 期待http://schemas.xmlsoap.org/soap/envelope/ 。 和Web服务链接就像 http://171.139.101.12/code/index.php/webservice/wsdl

来自PHP的类未注册错误

我们已经创建了一个C#类库程序集,并使其可见,以便能够从PHP调用其方法。 这曾经工作正常,但现在我们想在Windows Server 2008服务器上安装它,我们继续进入错误“Class not registered”。 为了排除任何依赖性问题,我在C#中创建了一个小小的测试类库。 类库是为Any CPU构建的,它是COM可见的(在AssemblyInfo.cs中也将COMVisible设置为true)。 测试类库只包含一个带有一个方法的类。 该类称为TestLib,名称空间也称为TestLib。 该方法称为Test,仅返回一个字符串。 我们所做的是以下内容: – 构建TestLib.dll – 将其复制到Windows Server 2008计算机 – 使用以下命令注册dll:regasm / codebase TestLib.dll – regasm工具返回成功消息 – 在PHP中我们只是尝试创建一个新的COM实例: try { $test = new COM(“TestLib.TestLib”); } catch (Exception $e) { die($e->getMessage()); } 当我们从浏览器或命令行(php -f test.php)调用此测试脚本时,我们在两种情况下都会收到错误“Class not registered” 我也尝试使用gacutil -i将TestLib添加到GAC,但无济于事; 仍然没有注册错误的类。 然后我尝试使用.NET 2.0而不是4.0作为目标框架编译testlibrary,结果相同。 顺便说一下,.NET Framework 4.0安装在服务器上。 有任何想法吗?

将Windows Phone 7应用程序中的图像文件上载到PHP

我正在尝试从图片库(在WP7上)上传图片并将其保存在服务器上的文件夹中。 在服务器上,我使用PHP来使用POST方法接收文件。 PHP代码是: 我已经尝试了一些方法,但它们似乎都失败了。 我已经使用Client.UploadFile方法在Windows窗体应用程序中完成了这项工作,但它似乎无法在Windows Phone应用程序上使用。 我认为httpwebrequest可以提供帮助,对吗? 到目前为止,这是我的C#代码: public partial class SamplePage : PhoneApplicationPage { public SamplePage() { InitializeComponent(); } PhotoChooserTask selectphoto = null; private void SampleBtn_Click(object sender, RoutedEventArgs e) { selectphoto = new PhotoChooserTask(); selectphoto.Completed += new EventHandler(selectphoto_Completed); selectphoto.Show(); } void selectphoto_Completed(object sender, PhotoResult e) { if (e.TaskResult == TaskResult.OK) { BinaryReader reader = […]

相当于PHP的包含在C#中

在C#中PHP的include()的等效命令是什么? 例如,PHP的include用作如下:include(“ex.php”); 我可以在C#中做同样的事情吗?

在C#中快速解析PHP

我需要在C#中解析PHP文件。 我们基本上要求另一个国家的一些开发人员上传PHP文件,一旦上传,我们需要检查php文件并获取所有方法和类/函数等的列表。 我想过使用一个正则表达式,但如果一个函数属于一个类等我就无法进行锻炼,所以我想知道是否已经有了’那里’会解析PHP文件并吐出它的函数(我正在尝试避免写一个完整的AST实现)。 有谁有想法吗? 我看了Coco / R但是找不到PHP语法文件。 我正在使用.NET 2.0和C#。