PHP - Video Tag Html5 With Src From Base64_encode Not Work On Different Device&browser
i try this code.
Code: [Select] <video width="320" height="240" controls="controls" autobuffer="autobuffer"> <source src="data:video/mp4;base64,AAAA<?php echo chunk_split(base64_encode(trim(file_get_contents('kecak.mp4')))); ?>" type="video/mp4" /> Your browser does not support the video tag. </video> it's work when i play in Notebook(safari, firefox) but not work when i play on IPAD2(safari) or Samsung Galaxy(Opera). i think the problem is in Code: [Select] src="data:video/mp4;base64,AAAA<?php echo chunk_split(base64_encode(trim(file_get_contents('kecak.mp4')))); ?>because when i replace with Code: [Select] src="kecak.mp4"it's work at all device and browser. i must use base64_encode(trim(file_get_contents('kecak.mp4'))) because in real my case it's come from response from RESTFul to delivery video via http. string response from http same with base64_encode(trim(file_get_contents('kecak.mp4'))). thanks u for help :-) Similar Tutorialswell.. i have vbulletin 4 forum i try to put video player so if i upload mp4 file so i can play video but sad part is its working only at firefox browser can you help me out .. video code looks like this
<vb:if condition="$attachment[attachmentextension] == mp4"> pls i really want that put to work in every browser sadly it works only in firefox somehow.. Evening Everyone,
Been working on this problem for a couple of days and I am stumped. I have a single php file to handle download and streaming of files. It works great with music files, I can download and stream to an <audio> html 5 element just fine. When it comes to my movies, I can download fine but it fails on streaming to a <video> html 5 element. I have done some logging and it looks like after a very short time it just quits.
log when streaming music:
/path/to/music/124 - Mouth Techno -1.mp3 size: 1508731 ctype: audio/mpeg range: 0-1508730/1508731 write chunk: 8192-1508731 write chunk: 16384-1508731 .... write chunk: 1507328-1508731 write chunk: 1515520-1508731 completedlog when streaming movie - this is the complete output, it just stops: Log Started /path/to/movies/AVP_REQUIEM_UNRATED.Title1.DVDRip.mp4 size: 889628920 ctype: video/mp4 range: 0-889628919/889628920 write chunk: 8192-889628920 write chunk: 16384-889628920 write chunk: 24576-889628920 write chunk: 32768-889628920 write chunk: 40960-889628920 write chunk: 49152-889628920 write chunk: 57344-889628920 write chunk: 65536-889628920Here is how I am downloading and streaming the files. Music files work just fine with <audio>, movie files I can only download but want to stream with <video>. This is a hack from multiple sources on the net. <?php // sanitize the file request, keep just the name and extension $filename = $filefix = str_replace('%20', ' ', $_GET["name"]); $file_path = $filename; $path_parts = pathinfo($file_path); $file_dir = $path_parts['dirname']; $file_name = $path_parts['basename']; $file_ext = $path_parts['extension']; $path_default = "/path/to/music/"; $path_types = array( "mp3" => "/path/to/music/", "mpg" => "/path/to/movies/", "avi" => "/path/to/movies/", "mp4" => "/path/to/movies/", ); $path = isset($path_types[$file_ext]) ? $path_types[$file_ext] : $path_default; $file_path = "$path"."$filename"; clearLog(); startLog(); writeLog("$file_path\n"); // allow a file to be streamed instead of sent as an attachment $is_attachment = isset($_GET["play"]) ? false : true; // make sure the file exists if (is_file("$file_path")){ $file_size = filesize($file_path); $file = @fopen($file_path,"rb"); writeLog("size: $file_size\n"); if ($file){ header("Expires: -1"); header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0"); // set appropriate headers for attachment or streamed file if ($is_attachment){ header("Content-Disposition: attachment; filename=\"$file_name\""); }else{ header('Content-Disposition: inline;'); } // set the mime type based on extension. $ctype_default = "application/octet-stream"; $content_types = array( "exe" => "application/octet-stream", "zip" => "application/zip", "mp3" => "audio/mpeg", "mpg" => "video/mpeg", "avi" => "video/x-msvideo", "mp4" => "video/mp4", ); $ctype = isset($content_types[$file_ext]) ? $content_types[$file_ext] : $ctype_default; header("Content-Type: " . $ctype); writeLog("ctype: $ctype\n"); $end = ($file_size - 1); $start = 0; header("Content-Length: $file_size"); header('Accept-Ranges: bytes'); header("Content-Range: bytes $start-$end/$file_size"); writeLog("range: $start-$end/$file_size\n"); $a=0; while(!feof($file)) { $chunk = (1024*8); echo fread($file, $chunk); //ob_flush(); flush(); $a=$a+$chunk; writeLog("write chunk: $a-$file_size\n"); if (connection_status()!=0){ writeLog("failed\n"); fclose($file); exit; } } // file save was a success writeLog("completed\n"); fclose($file); exit; }else{ // file couldn't be opened header("HTTP/1.0 500 Internal Server Error"); exit; } }else{ // file does not exist header("HTTP/1.0 404 Not Found"); exit; } function startLog(){ $myfile = fopen("newfile.txt", "w"); fwrite($myfile, "Log Started\n"); fclose($myfile); } function writeLog($pstr) { $myfile = fopen("newfile.txt", "a"); fwrite($myfile, $pstr); fclose($myfile); } function clearLog() { //fclose("newfile.txt"); unlink("newfile.txt"); } ?>incase it helps, code calling download.php <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <link rel="stylesheet" type="text/css" href="movies.css"> </head> <body> <a href="javascript:history.back()"><img src="pics/back.png" style=\"height:50px; width=50px;\"/></a> <a href="index.html"><img src="pics/home.png" style="height:50px; width=50px;display: in-line;"/></a> <div id="searchContainer" style="height: 40px; width = 700px; display: block; padding: 10px;"> <input type="text" id="SearchString" placeholder="Enter Search Address" style="vertical-align: top;padding: 10px;" class="valid"> <button name="btnSearch" id="btnSearch" type="button"></button> </div> <div id="Mainbox" > <div id="ItemList"> <ol id="List"> <?php $dir = '/path/to/movies/'; $dirlist = array_diff(scandir($dir), array('..', '.','Thumbs.db')); asort($dirlist); $a=0; foreach ($dirlist as $file) { $size = round(filesize('/path/to/movies/'.$file)/1048576); $filefix = str_replace(' ', '%20', $file); echo "<li><div class=\"item\" id=\"$a\">"; //title echo "<div id=\"title\">$file</div>"; echo "<div id=\"mb\">$size MB</div>"; echo "<div id=\"dl\"><a href=\"download.php?name=$filefix\"><img src=\"pics/download.png\" style=\"height:25px; width=25px;\"/></a></div>"; if ($size < 1500){ $url = 'download.php?name='.$filefix.'&play=true'; echo "<div id=\"play\" data-value=\"$url\"><a href=\"javascript:void(0)\" onClick=\"updateSource(this);\"><img src=\"pics/play.png\" style=\"height:25px; width=25px;\"/></a></div>"; } echo "</div></li>"; $a++; } ?> </ol> </div> </div> <div id="videocontainer"> <video id="video" controls> <source id="mp4movie" type="video/mp4"> <source src="movie.ogg" type="video/ogg" codecs="avc1.64001E, mp4a.40.2"> Your browser does not support the video tag. </video> </div> <script type="text/javascript"> function updateSource(element) { var dvalue = element.parentElement.getAttribute('data-value'); var video = document.getElementById('video'); var source = document.getElementById('mp4movie'); source.src=dvalue; video.load(); //call this to just preload the audio without playing video.play(); //call this to play the song right away } </script> </body> </html>Thanks for any help! Edited by AdrianHoffman, 27 September 2014 - 11:51 PM. I have a mobile app. They visit a web site where they login. The videos live above web root, thus making it impossible for anyone to directly link to the video file. On iOS, I made a PHP script that checks if they are logged in first and if they are I use a range download method that acts like streaming. Works great! On android however, the script isn't working..lame. So I was trying to think of other methods to deliver the video, but first checking if they are logged in. My idea was to check if they are logged in, if they are, copy the video from above web root to a temp directory in web root and give it a uniqid name and insert it into the DB. That ID will then expire after two hours and I would delete the video. Ok that sounds like it would work for both phones, except with high traffic, that could be problematic. My next idea was symlinks, but I don't know much about them other than they are a shortcut. Could I potentially use a symlink to give the logged in user a video file that lives above web root? I want to encode a long string, and wish to make it shorter. base64_encode is very handy but it makes the string length longer. Is there an alternative to do the encoding/decoding with shorter encoded string length? I know why you shouldn't use base64_encode() to encrypt passwords, so please ... I'm creating a membership based website. I've got a registration form that takes the password value then base64 encodes it, and puts the string value into a MySQL database. Now when the user goes to login he enters a username and a password. The password is base64_encoded() then this login form encoded password is compared to the encoded password in the MySQL database. However, the two strings are not the same, according to PHP. Does anyone know what is going on? Here's some code from the login form: Code: [Select] $user = $_POST['user']; $password = base64_encode($_POST['password']); $query = "SELECT * FROM users WHERE user_name = '$user' AND user_password = '$pass'"; $userstatsresult = mysql_query($query) or die ('Error in query: ' . mysql_error()); if (mysql_num_rows($userstatsresult)>0) { while($row = mysql_fetch_assoc($userstatsresult)) { if ($row[user_password] == $password) { echo 'Yay! They are the same!'; } else { echo 'WTF?'; } } } The output is always: WTF? I think that it has something to do with the interaction between MySQL and PHP because straight PHP works, as in: Code: [Select] // base64_encode('password') is 'cGFzc3dvcmQ=' if (base64_encode('password') == 'cGFzc3dvcmQ=') { echo 'They are equal strings!'; } else { echo 'They are NOT equal strings!'; } This will always output: They are equal strings! I'm really stuck here ... http://www.lastcraft.com/browser_documentation.php can someone post back an example of where this is working? <?php require_once('simpletest/browser.php'); $browser = &new SimpleBrowser(); $browser->get('http://php.net/'); $browser->click('reporting bugs'); $browser->click('statistics'); $page = $browser->click('PHP 5 bugs only'); preg_match('/status=Open.*?by=Any.*?(\d+)<\/a>/', $page, $matches); print $matches[1]; ?> I'm trying to detect a user's mobile handset when he visits my web page. So on my web page, I have placed this Javascript code: Is it possible to retrieve a visitor's iPhone device id? If so, how? If it's not possible, do all iPhones accept cookies? Hi, I have tried a lot of different scripts for detect and redirect for device for mobile and they seem to work ok on mac but ie does not load the page are there any scripts that work? I have a main site that sits at the usual www.domain.co.uk address and then i have a mobile site at www.domain.co.uk/phone i want to be able to have nay mobile users when accessing www.domain.co.uk be automaticly redirected to www.domain.co.uk/phone with that working in ie? any help please? thanks, Hi, how can i detect if my website is being open in mobile type all devices instead of computer Please help This topic has been moved to Other. http://www.phpfreaks.com/forums/index.php?topic=347646.0 I'm Trying to INSERT Data into mysql which is generated from biomatric attendance device. what i wanted to do is to save these data into mysql database. <?php include 'db.php'; ?> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script> <script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.11.2/jquery-ui.min.js"></script> <!-- <script type="text/javascript" src="load.js"></script> --> <link rel="stylesheet" href="style.css"> <title>Live Attendance</title> </head> <?php include("zklib/zklib.php"); $zk = new ZKLib("192.168.1.3", 4370); $ret = $zk->connect(); sleep(1); if ( $ret ): $zk->disableDevice(); sleep(1); ?> <body> <table border="1" cellpadding="5" cellspacing="2" style="float: left; margin-right: 10px;"> <tr> <th colspan="5">Data User</th> </tr> <tr> <th>UID</th> <th>ID</th> <th>Name</th> <th>Role</th> <th>Password</th> </tr> <?php try { //$zk->setUser(1, '1', 'Admin', '', LEVEL_ADMIN); $user = $zk->getUser(); sleep(1); while(list($uid, $userdata) = each($user)): if ($userdata[2] == LEVEL_ADMIN) $role = 'ADMIN'; elseif ($userdata[2] == LEVEL_USER) $role = 'USER'; else $role = 'Unknown'; ?> <tr> <td><?php echo $uid ?></td> <td><?php echo $userdata[0] ?></td> <td><?php echo $userdata[1] ?></td> <td><?php echo $role ?></td> <td><?php echo $userdata[3] ?> </td> </tr> <?php endwhile; } catch (Exception $e) { header("HTTP/1.0 404 Not Found"); header('HTTP', true, 500); // 500 internal server error } //$zk->clearAdmin(); if (isset($_POST['create_post'])) { $query = "INSERT INTO attendance(idx)"; $query .= "VALUES ($id)"; $submittodbquery = mysqli_query($con,$query); if (!$submittodbquery) { die("Failed up upload " . mysqli_error($con)); }else { echo "updated"; } } ?> </table> <button id="submit" type="submit" name="create_post" class="btn btn-danger">Submit New Post</button> <?php $name = $userdata[1]; $attendance = $zk->getAttendance(); sleep(1); while(list($idx, $attendancedata ) = each($attendance)): if ( $attendancedata[2] == 1 ) $status = 'Check Out'; else $status = 'Check In'; ?> <?php $idx ?> <?php $attendancedata[0] ?> <?php $attendancedata[1] ?> <?php $status ?> <?php date( "d-m-Y", strtotime( $attendancedata[3] ) ) ?> <?php date( "H:i:s", strtotime( $attendancedata[3] ) ) ?> <?php // custom code if (isset($_POST['submit'])) { $query = "INSERT INTO attendance(idx)"; $query .= "VALUES ($idx)"; $submittodbquery = mysqli_query($con,$query); if (!$submittodbquery) { die("Failed up upload " . mysqli_error($con)); }else { echo "updated"; } } ?> <?php endwhile ?> </table> <input type="submit" name="submit" value="Update Database"> <?php $zk->enableDevice(); sleep(1); $zk->disconnect(); endif ?> </body> </html> Thanks for reading my question ..
This topic has been moved to Miscellaneous. http://www.phpfreaks.com/forums/index.php?topic=318425.0 Hi Everyone: Can anyone show me or direct me to a PHP PHP Mobile Device Detection & Redirection Script. I use to use this when doing ASP: Code: [Select] <% Dim user_agent, mobile_browser, Regex, match, mobile_agents, mobile_ua, i, size user_agent = Request.ServerVariables("HTTP_USER_AGENT") mobile_browser = 0 Set Regex = New RegExp With Regex .Pattern = "(up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|windows ce|pda|mobile|mini|palm)" .IgnoreCase = True .Global = True End With match = Regex.Test(user_agent) If match Then mobile_browser = mobile_browser+1 If InStr(Request.ServerVariables("HTTP_ACCEPT"), "application/vnd.wap.xhtml+xml") Or Not IsEmpty(Request.ServerVariables("HTTP_X_PROFILE")) Or Not IsEmpty(Request.ServerVariables("HTTP_PROFILE")) Then mobile_browser = mobile_browser+1 end If mobile_agents = Array("w3c ", "acs-", "alav", "alca", "amoi", "audi", "avan", "benq", "bird", "blac", "blaz", "brew", "cell", "cldc", "cmd-", "dang", "doco", "eric", "hipt", "inno", "ipaq", "java", "jigs", "kddi", "keji", "leno", "lg-c", "lg-d", "lg-g", "lge-", "maui", "maxo", "midp", "mits", "mmef", "mobi", "mot-", "moto", "mwbp", "nec-", "newt", "noki", "oper", "palm", "pana", "pant", "phil", "play", "port", "prox", "qwap", "sage", "sams", "sany", "sch-", "sec-", "send", "seri", "sgh-", "shar", "sie-", "siem", "smal", "smar", "sony", "sph-", "symb", "t-mo", "teli", "tim-", "tosh", "tsm-", "upg1", "upsi", "vk-v", "voda", "wap-", "wapa", "wapi", "wapp", "wapr", "webc", "winw", "winw", "xda", "xda-") size = Ubound(mobile_agents) mobile_ua = LCase(Left(user_agent, 4)) For i=0 To size If mobile_agents(i) = mobile_ua Then mobile_browser = mobile_browser+1 Exit For End If Next If mobile_browser>0 Then Response.Redirect("http://www.sp.com/SPMOBI/MOBI.asp") End If %> Is there a PHP equivalent of this? As always, I appreciate to wisdom of the board. Thanks! Hello guys, I am new to PHP programming. I am trying to figure out how to use PHP language to transmit/write characters to a USB port device at 9600 baud rate 8-N-1. Basically I just need the PHP coding to allow me to send stuff to the USB device but I have no idea how I can interface this. I did some researching but most were for RS-232 COM Port. I can't find the proper one for USB. If someone can help me out, that would be awesome. Thank you! Hi All,
I'm very new to PHP and have been reading forums for the better half of two days trying to get ot the bottom of an issue I'm having with Contact form validation.
Problem: When submitting the form data, the information stored in a variable is not outputted to the webpage.
What I think I'm expecting: On form submission, the HTML5 elements should be checked to see if they are empty. If they are empty, the "string" that I'm storing in the *Err variables should then be outputted on the page to advise the use that the field has not been filled in.
Things I've tried: I've confirmed that Apache server is configured to allow HTML pages to be parsed as PHP and have verified that it's working by confirming that PHP scripts do run in the page, PHP includes within the HTML documents apply and that when I use <?php echo "Blah";?> on the page, it outputs correctly. When using a statement such as <?php echo $blah;?> or <?php echo "$blah";?> or <?php echo "{$blah}";?>, the content of the variable is not displayed to the user submitting the form. What am I doing wrong here? I'm trying to do this with just CSS, HTML5 and PHP - I've read about jquery and javascript but preference is to stay with the three above unless what I'm trying to do is not possible.
Any pointers/assistance would be hugely appreciated - I mustn't be understanding something correctly.
Cheers,
A
PHP Script: (P.S... I've intentionally left the mail component out until I get the form validating correctly).
<?php
htmlspecialchars($_SERVER["PHP_SELF"]); if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; echo $nameErr; } else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = test_input($_POST["email"]); } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); } if (empty($_POST["phone"])) { $website = ""; } else { $website = test_input($_POST["phone"]); } if (empty($_POST["message"])) { $comment = ""; } else { $comment = test_input($_POST["message"]); } } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> Markup: <form class="form-style-9" method="post" enctype="multipart/form-data"> <ul> <li>Contact Form</li> <li> <input type="text" name="name" required class="field-style field-split align-left" placeholder="Name"><span class="error">*<?php echo $nameErr;?></span> <input type="email" name="email" required class="field-style field-split align-right" placeholder="Email"> </li> <li> <input type="tel" name="phone" required class="field-style field-split align-left" placeholder="Phone"> <input type="url" name="website" class="field-style field-split align-right" placeholder="Website"> </li> <li> <input type="text" maxlength="20" min="5" name="subject" required class="field-style field-full align-none" placeholder="Subject"> </li> <li> <textarea name="message" maxlength="200" required class="field-style" placeholder="Message"></textarea> </li> <li> <input id="submit" name="submit" type="submit" value="Send Message"> </li> </ul> </form> Edited by ahphpnz, 18 January 2015 - 08:15 PM. Hi,
I've been looking at the Bootstrap 3 and various tutorials / example sites even from their own website. This has lead me to a question I cannot seem to find a quick answer to why do they use divs over the new HTML5 tags such as nav.
For example;
<div class="navbar navbar-inverse navbar-fixed-top" role="navigation"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Project name</a> </div> <div class="collapse navbar-collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Home</a></li> <li><a href="#about">About</a></li> <li><a href="#contact">Contact</a></li> </ul> </div><!--/.nav-collapse --> </div> </div>Comapred to something more like; <div class="container"> <nav> <ul> <li><a href="#"> Home </a></li> </ul> </nav> </div>I know these two examples don't match up in the slightest but I'm not looking for the synatx just an explaniation. Is it the fact that HTML5 is still the draft stages and IE doesn't handle nav to gracefully wihtout shiv etc... Or is the developer of the examples is just a bit lazy and couldn't be bothered to swap it to the newer tags? The reason I ask is I'm not too sure which way would be the best for developing a site using bootstrap. Thanks in advance. Help! HTML5 Submit button not calling PHD file My HTML: <html> <head> </head> <body> <form action="my.php" method="POST" name="process_form"> <Input type="submit" name="submit" value="Submit" formmethod="post" formaction="my.php"> </form> </body> </html>PHP if(isset ($_POST["submit"])){ Do something; Do something; } else { Do something; Do something; }I click the button and nothing happens. What am I missing? Hi,
I've got a "data.txt" file with the following content:
One1:One2:One3:One4:One5:One6 Two1:Two2:Two3:Two4:Two5:Two6 Three1:Three2:Three3:Three4:Three5:Three6Now I want to be able to take each data and put on a specific location of a htlm code. Each line for its own. So for the first line, it should look something like this: <html> <head> <title></title> <head> <body> <h1>One2</h1> <h2>One4 some other Text One5</h2> <img src="One6.jpg"> </body> </html>Unforturtunately I don't have a clue how to do that. Can anybody help me out or does someone know a good and easy tutorial? Thanks a lot I'd like to use an application that's not browser based, on Internet Explorer. I've read somewhere that this is possible with a PHP script, but which one? If you can get me on the right track, I'd really appreciate it. Cheers. |