Upload von Dateien via PHP mit nem WebClient, Post und Basic-Authentifizierung, die 2.

  • Allgemein

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Samus Aran.

    Upload von Dateien via PHP mit nem WebClient, Post und Basic-Authentifizierung, die 2.

    PHP-Quellcode

    1. <?php
    2. if (!isset($_SERVER['PHP_AUTH_USER'])) {
    3. header('WWW-Authenticate: Basic realm="blubb"');
    4. header('HTTP/1.0 401 Unauthorized');
    5. echo "<!DOCTYPE HTML><html><head><title>Access denied</title></head><body><h1>Access denied, not authorized</h1></body></html>";
    6. } else {
    7. $username = mysql_real_escape_string($_SERVER['PHP_AUTH_USER']);
    8. $password = md5(mysql_real_escape_string($_SERVER['PHP_AUTH_PW']);
    9. $connectionid = mysql_connect("localhost", "local", "host");
    10. $sql = "SELECT * FROM 'local'.'user' WHERE username = '$username' AND password = '$password'";
    11. $result = mysql_query($sql);
    12. if(!$result) {
    13. die('Error: ' . mysql_error());
    14. }
    15. if(!empty(mysql_num_rows($result))) {
    16. if(!empty($_FILES)) {
    17. print_r($_SERVER);
    18. } else {
    19. echo "No files specified";
    20. }
    21. } else {
    22. header('HTTP/1.0 401 Unauthorized');
    23. echo "Access denied, not authorized";
    24. }
    25. }
    26. ?>


    VB.NET-Quellcode

    1. Dim wClient As New Net.WebClient()
    2. Private Sub UploadCompleted(ByVal sender As Object, ByVal e As Net.UploadFileCompletedEventArgs)
    3. 'Trace.WriteLine(e.Result)
    4. End Sub
    5. Private Sub UploadStatusChanged(ByVal sender As Object, ByVal e As Net.UploadProgressChangedEventArgs)
    6. Me.ProgressBar1.Value = CInt((e.BytesSent / e.TotalBytesToSend) * 100)
    7. End Sub
    8. Private Sub ProgressBar1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgressBar1.Click
    9. AddHandler wClient.UploadFileCompleted, AddressOf UploadCompleted
    10. AddHandler wClient.UploadProgressChanged, AddressOf UploadStatusChanged
    11. wClient.Headers.Add("Content-Type", "binary/octet-stream")
    12. wClient.Credentials = New Net.NetworkCredential("Beispieluser", "Beispielpasswort")
    13. Try
    14. wClient.UploadFileAsync(New Uri("http://wayne/example.php"), "POST", "C:\Users\Samus Aran\Music\becominginsane.ogg")
    15. Catch ex As Exception
    16. MessageBox.Show(ex.InnerException.Message)
    17. End Try
    18. End Sub


    Die Datei wird beim Klick auf die Progressbar hochgeladen, dann erst krieg ich ne System.Net.WebException, in der angegeben wird, dass der Server nen Fehler 500 zurückgegeben hat.
    Der Benutzer bei wClient.Credentials existiert, warum gibts da nen Fehler?
    Versuche erstmal ohne Upload, einfach so ganz normal das Script aufzurufen, nach der PHP-Authentifizierung machst du ein einfachen echo damit im Programm sehen kannst, ob das ankommt.

    Mit dieser Authentifizierung in PHP hatte ich bisher auch immer meine Probleme, deswegen habe ich immer htaccess genommen.